From e6cc85dbff9b93d9d0a9ee3c226cb7743ede5b62 Mon Sep 17 00:00:00 2001 From: Jonathan Hohle Date: Wed, 4 Nov 2026 18:02:59 -0700 Subject: [PATCH] Refactor `WEAPON` and Add `WEAPON1` Build (#3813) This change adds `WEAPON1` to the `us` build by refactoring the overlay header and `g_HandId`. Where possible, objects are reused between both weapon overlay bundles. Based on the PSP weapon layout it appeared that the header data and `g_HandId` for each weapon were in separate objects from the weapon code and data. Separating them allows the link order to be rearranged between platforms without any code changes or macros. This also eliminates the need to special case function interfaces that differed between weapons. The header only needs to resolve the symbol at link time. A single `w_init` object can be used for all weapons, regardless of hand. `left_hand` and `right_hand` objects can be linked to `w0_*` and `w1_*` weapons, respectively. In the majority of cases, a specific weapon object just needs to be linked to the corresponding "hand" object to match for both `WEAPON0` and `WEAPON1`. This involves a lot of file edits, but the changes are pretty simple: * remove the header `Weapon` struct from each weapon source (defined in `weapon_private.h`) and move into `w_init.c` * remove the `g_HandId` global from each weapon source and move into `left_hand.c` and `right_hand.c` * configure segments for `w_init` and hand and update the build system how to handle multiple data segments. Because `w_init` is resolved at link time, all weapon API functions are no longer `static`. These functions are no longer compiled with the header, so no compile time switches are needed to synchronize the header struct interfaces with the actual function interfaces. Not all `WEAPON1` weapons are matched, primarily because of missing data. This requires either symbol resolution or data imports. This can be done incrementally. Weapons that haven't been matched are using the `asm` segment type out of convenience. The build system has bespoke rules for weapons and this avoided the complexity of generating C stubs for now. There are some weapons that cannot share the same weapon object. For example `w0_051` and `w1_051` differ by one byte in the data segment. These will need to be split into separate objects in a future change. It's not clear to me that the `progress.py` changes will work correctly. Submitting as draft for now for discussion. --- CMakeLists.txt | 4 +- config/check.us.sha | 1 + config/splat.pspeu.w0_000.yaml | 6 +- config/splat.pspeu.w1_000.yaml | 6 +- config/splat.pspeu.w1_012.yaml | 3 +- config/splat.us.weapon.yaml | 122 +++- config/splat.us.weapon1.yaml | 1015 +++++++++++++++++++++++++++++ config/symbols.pspeu.w1_012.txt | 2 +- config/symbols.us.weapon1.txt | 0 config/symbols.us.weapon1.txt.in | 1002 ++++++++++++++++++++++++++++ config/symexport.pspeu.w0_000.txt | 2 +- config/symexport.pspeu.w1_000.txt | 2 +- config/symexport.pspeu.w1_012.txt | 2 +- include/weapon.h | 4 + src/weapon/hand.h | 7 + src/weapon/left_hand.c | 2 + src/weapon/right_hand.c | 2 + src/weapon/shared.h | 2 +- src/weapon/w1_012.c | 2 +- src/weapon/w_000.c | 101 +-- src/weapon/w_001.c | 27 +- src/weapon/w_002.c | 30 +- src/weapon/w_003.c | 29 +- src/weapon/w_004.c | 29 +- src/weapon/w_005.c | 27 +- src/weapon/w_006.c | 32 +- src/weapon/w_007.c | 30 +- src/weapon/w_008.c | 30 +- src/weapon/w_009.c | 27 +- src/weapon/w_010.c | 25 +- src/weapon/w_011.c | 27 +- src/weapon/w_012.c | 32 +- src/weapon/w_013.c | 29 +- src/weapon/w_014.c | 27 +- src/weapon/w_015.c | 23 +- src/weapon/w_016.c | 25 +- src/weapon/w_017.c | 27 +- src/weapon/w_018.c | 27 +- src/weapon/w_019.c | 27 +- src/weapon/w_020.c | 29 +- src/weapon/w_021.c | 29 +- src/weapon/w_022.c | 27 +- src/weapon/w_023.c | 29 +- src/weapon/w_024.c | 29 +- src/weapon/w_025.c | 29 +- src/weapon/w_026.c | 29 +- src/weapon/w_027.c | 29 +- src/weapon/w_028.c | 29 +- src/weapon/w_029.c | 43 +- src/weapon/w_030.c | 24 +- src/weapon/w_031.c | 27 +- src/weapon/w_032.c | 27 +- src/weapon/w_033.c | 27 +- src/weapon/w_034.c | 31 +- src/weapon/w_035.c | 30 +- src/weapon/w_036.c | 29 +- src/weapon/w_037.c | 29 +- src/weapon/w_038.c | 29 +- src/weapon/w_039.c | 29 +- src/weapon/w_040.c | 29 +- src/weapon/w_041.c | 27 +- src/weapon/w_042.c | 29 +- src/weapon/w_043.c | 29 +- src/weapon/w_044.c | 27 +- src/weapon/w_045.c | 32 +- src/weapon/w_046.c | 32 +- src/weapon/w_047.c | 27 +- src/weapon/w_048.c | 25 +- src/weapon/w_049.c | 21 +- src/weapon/w_050.c | 21 +- src/weapon/w_051.c | 40 +- src/weapon/w_052.c | 29 +- src/weapon/w_053.c | 25 +- src/weapon/w_054.c | 27 +- src/weapon/w_055.c | 27 +- src/weapon/w_056.c | 27 +- src/weapon/w_057.c | 27 +- src/weapon/w_058.c | 27 +- src/weapon/w_init.c | 54 ++ src/weapon/weapon_private.h | 101 +-- tools/builds/gen.py | 59 +- tools/progress.py | 13 +- weapon1.ld | 1 + 83 files changed, 3110 insertions(+), 1047 deletions(-) create mode 100644 config/splat.us.weapon1.yaml create mode 100644 config/symbols.us.weapon1.txt create mode 100644 config/symbols.us.weapon1.txt.in create mode 100644 src/weapon/hand.h create mode 100644 src/weapon/left_hand.c create mode 100644 src/weapon/right_hand.c create mode 100644 src/weapon/w_init.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 42067ab46..a3d71a430 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2426,9 +2426,9 @@ if(ENABLE_SATURN_STAGES) endif() foreach(id 000 002 007 008 010 012 034 035 037 040 041 043 045 046 050 051 052) - add_overlay(w0_${id} src/weapon/w_${id}.c) + add_overlay(w0_${id} src/weapon/w_init.c src/weapon/right_hand.c src/weapon/w_${id}.c) target_compile_definitions(${w0_${id}_COMPILE_TARGET} PRIVATE WEAPON0) - add_overlay(w1_${id} src/weapon/w_${id}.c) + add_overlay(w1_${id} src/weapon/w_init.c src/weapon/left_hand.c src/weapon/w_${id}.c) target_compile_definitions(${w1_${id}_COMPILE_TARGET} PRIVATE WEAPON1) endforeach() diff --git a/config/check.us.sha b/config/check.us.sha index 4f09a56cf..b4c3c5f90 100644 --- a/config/check.us.sha +++ b/config/check.us.sha @@ -113,3 +113,4 @@ b54466dec3923d43bd08d71bec688da252153984 build/us/TT_003.BIN 099f856927f53c76b0bdeb93755d4a19834cc178 build/us/TT_005.BIN 88a4a391c25b62cc1a9093aac3300387e32e6d03 build/us/TT_006.BIN b8dcd64f95d197d3f59ab3e46f67897ecdc477cb build/us/WEAPON0.BIN +8370dceda3aaca4320a677f3cb291b661b50f876 build/us/WEAPON1.BIN diff --git a/config/splat.pspeu.w0_000.yaml b/config/splat.pspeu.w0_000.yaml index 185318b50..3781c8191 100644 --- a/config/splat.pspeu.w0_000.yaml +++ b/config/splat.pspeu.w0_000.yaml @@ -44,6 +44,8 @@ segments: subalign: 8 subsegments: - [0x80, c, w_000] - - [0x6CC, .data, w_000] - - {start: 0x1980, type: bss, vram: 0x92F4780} + - [0x698, c, w_init] + - [0x700, .data, w_000] + - [0x1908, .data, w_init] + - {start: 0x1980, type: .bss, 0x92F4780, name: left_hand} - [0x1980] diff --git a/config/splat.pspeu.w1_000.yaml b/config/splat.pspeu.w1_000.yaml index 597637b19..9a0a87166 100644 --- a/config/splat.pspeu.w1_000.yaml +++ b/config/splat.pspeu.w1_000.yaml @@ -44,6 +44,8 @@ segments: subalign: 8 subsegments: - [0x80, c, w_000] - - [0x700, .data, w_000] - - {start: 0x1980, type: bss, vram: 0x92F8580} + - [0x698, c, w_init] + - [0x700, .data, right_hand] + - [0x708, .data, w_000] + - [0x1910, .data, w_init] - [0x1980] diff --git a/config/splat.pspeu.w1_012.yaml b/config/splat.pspeu.w1_012.yaml index 12b717605..4337b9b8d 100644 --- a/config/splat.pspeu.w1_012.yaml +++ b/config/splat.pspeu.w1_012.yaml @@ -43,7 +43,8 @@ segments: subalign: 8 subsegments: - [0x80, c, w1_012] - - [0x1900, data] + - [0x1900, data, right_hand] + - [0x1908, data, w1_012] # - [0x23D8, .rodata, w1_012] - {start: 0x2480, type: bss, vram: 0x92F9080} - [0x2480] diff --git a/config/splat.us.weapon.yaml b/config/splat.us.weapon.yaml index d79a0a5af..ed7300e0f 100644 --- a/config/splat.us.weapon.yaml +++ b/config/splat.us.weapon.yaml @@ -19,6 +19,8 @@ options: use_legacy_include_asm: no extensions_path: tools/splat_ext symbol_name_format: $SEG_$VRAM + disassemble_all: true + disasm_unknown: true global_vram_start: 0x80010000 section_order: - ".data" @@ -41,7 +43,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x04000, .data, w_init] - [0x04040, .data, w_000] + - [0x050D0, .data, left_hand] - [0x050D4, c, w_000] - name: f_001 type: grey4 @@ -56,8 +60,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x0B000, .data, w_init] - [0x0B040, .data, w_001] - - [0x0BA44, data, w_001] + - [0x0BA44, data, w_001_001] + - [0x0BFF4, .data, left_hand] - [0x0BFF8, .rodata, w_001] - [0x0C014, c, w_001] - name: f_002 @@ -73,7 +79,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x12000, .data, w_init] - [0x12040, .data, w_002] + - [0x12BD8, .data, left_hand] - [0x12BDC, c, w_002] - name: f_003 type: grey4 @@ -88,8 +96,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x19000, .data, w_init] - [0x19040, .data, w_003] - [0x19884, data, w_003] + - [0x19C3C, .data, left_hand] - [0x19C40, c, w_003] - name: f_004 type: grey4 @@ -104,8 +114,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x20000, .data, w_init] - [0x20040, .data, w_004] - [0x20EAC, data, w_004] + - [0x21318, .data, left_hand] - [0x2131C, c, w_004] - name: f_005 type: grey4 @@ -120,8 +132,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x27000, .data, w_init] - [0x27040, .data, w_005] - [0x27EAC, data, w_005] + - [0x28318, .data, left_hand] - [0x2831C, c, w_005] - name: f_006 type: grey4 @@ -136,8 +150,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x2E000, .data, w_init] - [0x2E040, .data, w_006] - [0x2E884, data, w_006] + - [0x2EC3C, .data, left_hand] - [0x2EC40, .rodata, w_006] - [0x2EC54, c, w_006] - name: f_007 @@ -153,7 +169,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x35000, .data, w_init] - [0x35040, .data, w_007] + - [0x35C9C, .data, left_hand] - [0x35CA0, c, w_007] - name: f_008 type: grey4 @@ -168,7 +186,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x3C000, .data, w_init] - [0x3C040, .data, w_008] + - [0x3CAC0, .data, left_hand] - [0x3CAC4, .rodata, w_008] - [0x3CB4C, c, w_008] - name: f_009 @@ -184,8 +204,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x43000, .data, w_init] - [0x43040, .data, w_009] - [0x43804, data, w_009] + - [0x43AC0, .data, left_hand] - [0x43AC4, .rodata, w_009] - [0x43B4C, c, w_009] - name: f_010 @@ -201,7 +223,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x4A000, .data, w_init] - [0x4A040, .data, w_010] + - [0x4AC04, .data, left_hand] - [0x4AC08, .rodata, w_010] - [0x4ACC0, c, w_010] - [0x4CC1C, .bss, w_010] @@ -218,8 +242,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x51000, .data, w_init] - [0x51040, .data, w_011] - [0x51958, data, w_011] + - [0x51C3C, .data, left_hand] - [0x51C40, .rodata, w_011] - [0x51CDC, c, w_011] - name: f_012 @@ -235,7 +261,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x58000, .data, w_init] - [0x58040, .data, w_012] + - [0x58AC8, .data, left_hand] - [0x58ACC, c, w_012] - [0x59B28, .bss, w_012] - name: f_013 @@ -251,8 +279,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x5F000, .data, w_init] - [0x5F040, .data, w_013] - [0x5F2B0, data, w_013] + - [0x5F604, .data, left_hand] - [0x5F608, .rodata, w_013] - [0x5F62C, c, w_013] - name: f_014 @@ -268,8 +298,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x66000, .data, w_init] - [0x66040, .data, w_014] - [0x662B0, data, w_014] + - [0x665B8, .data, left_hand] - [0x665BC, c, w_014] - name: f_015 type: grey4 @@ -284,8 +316,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x6D000, .data, w_init] - [0x6D040, .data, w_015] - [0x6D478, data, w_015] + - [0x6D7E0, .data, left_hand] - [0x6D7E4, c, w_015] - name: f_016 type: grey4 @@ -300,8 +334,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x74000, .data, w_init] - [0x74040, .data, w_016] - [0x742B0, data, w_016] + - [0x745F4, .data, left_hand] - [0x745F8, .rodata, w_016] - [0x7460C, c, w_016] - name: f_017 @@ -317,7 +353,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x7B000, .data, w_init] - [0x7B040, .data, w_017] + - [0x7B3A8, .data, left_hand] - [0x7B3AC, c, w_017] - name: f_018 type: grey4 @@ -332,8 +370,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x82000, .data, w_init] - [0x82040, .data, w_018] - [0x82488, data, w_018] + - [0x82738, .data, left_hand] - [0x8273C, .rodata, w_018] - [0x82740, c, w_018] - [0x831B4, .bss, w_018] @@ -350,8 +390,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x89000, .data, w_init] - [0x89040, .data, w_019] - [0x8930C, data, w_019] + - [0x89550, .data, left_hand] - [0x89554, c, w_019] - name: f_020 type: grey4 @@ -366,8 +408,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x90000, .data, w_init] - [0x90040, .data, w_020] - [0x90630, data, w_020] + - [0x90B9C, .data, left_hand] - [0x90BA0, .rodata, w_020] - [0x90BC8, c, w_020] - name: f_021 @@ -383,8 +427,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x97000, .data, w_init] - [0x97040, .data, w_021] - [0x97564, data, w_021] + - [0x97794, .data, left_hand] - [0x97798, .rodata, w_021] - [0x977B4, c, w_021] - name: f_022 @@ -400,8 +446,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x9E000, .data, w_init] - [0x9E040, .data, w_022] - [0x9E540, data, w_022] + - [0x9E810, .data, left_hand] - [0x9E814, c, w_022] - name: f_023 type: grey4 @@ -416,8 +464,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0xA5000, .data, w_init] - [0xA5040, .data, w_023] - [0xA58A4, data, w_023] + - [0xA5CF0, .data, left_hand] - [0xA5CF4, .rodata, w_023] - [0xA5D80, c, w_023] - name: f_024 @@ -433,8 +483,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0xAC000, .data, w_init] - [0xAC040, .data, w_024] - [0xAC804, data, w_024] + - [0xACD50, .data, left_hand] - [0xACD54, .rodata, w_024] - [0xACDE0, c, w_024] - name: f_025 @@ -450,8 +502,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0xB3000, .data, w_init] - [0xB3040, .data, w_025] - [0xB3804, data, w_025] + - [0xB3AE0, .data, left_hand] - [0xB3AE4, .rodata, w_025] - [0xB3B74, c, w_025] - name: f_026 @@ -467,8 +521,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0xBA000, .data, w_init] - [0xBA040, .data, w_026] - [0xBA804, data, w_026] + - [0xBAAEC, .data, left_hand] - [0xBAAF0, .rodata, w_026] - [0xBAB9C, c, w_026] - name: f_027 @@ -484,8 +540,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0xC1000, .data, w_init] - [0xC1040, .data, w_027] - [0xC1A18, data, w_027] + - [0xC1CC8, .data, left_hand] - [0xC1CCC, .rodata, w_027] - [0xC1D54, c, w_027] - name: f_028 @@ -501,8 +559,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0xC8000, .data, w_init] - [0xC8040, .data, w_028] - [0xC8804, data, w_028] + - [0xC8B64, .data, left_hand] - [0xC8B68, .rodata, w_028] - [0xC8BF4, c, w_028] - name: f_029 @@ -518,8 +578,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0xCF000, .data, w_init] - [0xCF040, .data, w_029] - [0xCF884, data, w_029] + - [0xCFD50, .data, left_hand] - [0xCFD54, .rodata, w_029] - [0xCFDD8, c, w_029] - name: f_030 @@ -535,8 +597,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0xD6000, .data, w_init] - [0xD6040, .data, w_030] - [0xD6040, data, w_030] + - [0xD667C, .data, left_hand] - [0xD6680, .rodata, w_030] - [0xD66DC, c, w_030] - name: f_031 @@ -552,8 +616,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0xDD000, .data, w_init] - [0xDD040, .data, w_031] - [0xDD704, data, w_031] + - [0xDD914, .data, left_hand] - [0xDD918, c, w_031] - name: f_032 type: grey4 @@ -568,8 +634,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0xE4000, .data, w_init] - [0xE4040, .data, w_032] - [0xE4704, data, w_032] + - [0xE4920, .data, left_hand] - [0xE4924, c, w_032] - name: f_033 type: grey4 @@ -584,8 +652,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0xEB000, .data, w_init] - [0xEB040, .data, w_033] - [0xEBA9C, data, w_033] + - [0xEBC54, .data, left_hand] - [0xEBC58, c, w_033] - name: f_034 type: grey4 @@ -600,7 +670,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0xF2000, .data, w_init] - [0xF2040, .data, w_034] + - [0xF294C, .data, left_hand] - [0xF2950, c, w_034] - name: f_035 type: grey4 @@ -615,7 +687,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0xF9000, .data, w_init] - [0xF9040, .data, w_035] + - [0xF9548, .data, left_hand] - [0xF954C, c, w_035] - name: f_036 type: grey4 @@ -630,8 +704,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x100000, .data, w_init] - [0x100040, .data, w_036] - [0x100404, data, w_036] + - [0x100558, .data, left_hand] - [0x10055C, c, w_036] - name: f_037 type: grey4 @@ -646,7 +722,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x107000, .data, w_init] - [0x107040, .data, w_037] + - [0x1077C0, .data, left_hand] - [0x1077C4, c, w_037] - [0x108BE4, .bss, w_037] - name: f_038 @@ -662,8 +740,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x10E000, .data, w_init] - [0x10E040, .data, w_038] - [0x10EC08, data, w_038] + - [0x10EDE8, .data, left_hand] - [0x10EDEC, c, w_038] - name: f_039 type: grey4 @@ -678,8 +758,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x115000, .data, w_init] - [0x115040, .data, w_039] - [0x115C08, data, w_039] + - [0x115DE8, .data, left_hand] - [0x115DEC, c, w_039] - name: f_040 type: grey4 @@ -694,7 +776,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x11C000, .data, w_init] - [0x11C040, .data, w_040] + - [0x11C870, .data, left_hand] - [0x11C874, c, w_040] - [0x11D540, .bss, w_040] - name: f_041 @@ -710,7 +794,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x123000, .data, w_init] - [0x123040, .data, w_041] + - [0x12355C, .data, left_hand] - [0x123560, .rodata, w_041] - [0x123574, c, w_041] - [0x124200, .bss, w_041] @@ -727,8 +813,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x12A000, .data, w_init] - [0x12A040, .data, w_042] - [0x12A3E4, data, w_042] + - [0x12A75C, .data, left_hand] - [0x12A760, .rodata, w_042] - [0x12AB04, c, w_042] - [0x12B5EC, .bss, w_042] @@ -745,7 +833,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x131000, .data, w_init] - [0x131040, .data, w_043] + - [0x132058, .data, left_hand] - [0x13205C, c, w_043] - name: f_044 type: grey4 @@ -760,7 +850,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x138000, .data, w_init] - [0x138040, .data, w_044] + - [0x1382A4, .data, left_hand] - [0x1382A8, .rodata, w_044] - [0x1382C0, c, w_044] - name: f_045 @@ -776,7 +868,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x13F000, .data, w_init] - [0x13F040, .data, w_045] + - [0x13F374, .data, left_hand] - [0x13F378, c, w_045] - [0x1403B8, .bss, w_045] - name: f_046 @@ -792,7 +886,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x146000, .data, w_init] - [0x146040, .data, w_046] + - [0x146C60, .data, left_hand] - [0x146C64, c, w_046] - name: f_047 type: grey4 @@ -807,8 +903,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x14D000, .data, w_init] - [0x14D040, .data, w_047] - [0x14D228, data, w_047] + - [0x14D550, .data, left_hand] - [0x14D554, .rodata, w_047] - [0x14D568, c, w_047] - name: f_048 @@ -824,8 +922,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x154000, .data, w_init] - [0x154040, .data, w_048] - [0x154A44, data, w_048] + - [0x15504C, .data, left_hand] - [0x155050, c, w_048] - name: f_049 type: grey4 @@ -840,8 +940,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x15B000, .data, w_init] - [0x15B040, .data, w_049] - [0x15BC00, data, w_049] + - [0x15C148, .data, left_hand] - [0x15C14C, c, w_049] - name: f_050 type: grey4 @@ -856,7 +958,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x162000, .data, w_init] - [0x162040, .data, w_050] + - [0x16307C, .data, left_hand] - [0x163080, c, w_050] - [0x164bf8, .bss, w_050] - name: f_051 @@ -872,7 +976,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x169000, .data, w_init] - [0x169040, .data, w_051] + - [0x169ED0, .data, left_hand] - [0x169ED4, c, w_051] - [0x16B0E0, .bss, w_051] - name: f_052 @@ -888,7 +994,9 @@ segments: align: 4 subalign: 4 subsegments: + - [0x170000, .data, w_init] - [0x170040, .data, w_052] + - [0x170C20, .data, left_hand] - [0x170C24, .rodata, w_052] - [0x170CB0, c, w_052] - [0x172B84, .bss, w_052] @@ -905,8 +1013,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x177000, .data, w_init] - [0x177040, .data, w_053] - [0x177A44, data, w_053] + - [0x178268, .data, left_hand] - [0x17826C, .rodata, w_053] - [0x178280, c, w_053] - name: f_054 @@ -922,8 +1032,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x17E000, .data, w_init] - [0x17E040, .data, w_054] - [0x17EA44, data, w_054] + - [0x17EF08, .data, left_hand] - [0x17EF0C, c, w_054] - name: f_055 type: grey4 @@ -938,8 +1050,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x185000, .data, w_init] - [0x185040, .data, w_055] - [0x185A44, data, w_055] + - [0x18619C, .data, left_hand] - [0x1861A0, c, w_055] - name: f_056 type: grey4 @@ -954,8 +1068,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x18C000, .data, w_init] - [0x18C040, .data, w_056] - [0x18CA44, data, w_056] + - [0x18D05C, .data, left_hand] - [0x18D060, c, w_056] - name: f_057 type: grey4 @@ -970,8 +1086,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x193000, .data, w_init] - [0x193040, .data, w_057] - [0x193A44, data, w_057] + - [0x1940B0, .data, left_hand] - [0x1940B4, c, w_057] - name: f_058 type: grey4 @@ -986,8 +1104,10 @@ segments: align: 4 subalign: 4 subsegments: + - [0x19A000, .data, w_init] - [0x19A040, .data, w_058] - [0x19A808, data, w_058] + - [0x19ABC8, .data, left_hand] - [0x19ABCC, .rodata, w_058] - [0x19AC50, c, w_058] - [0x19D000] diff --git a/config/splat.us.weapon1.yaml b/config/splat.us.weapon1.yaml new file mode 100644 index 000000000..2abc42a9b --- /dev/null +++ b/config/splat.us.weapon1.yaml @@ -0,0 +1,1015 @@ +options: + platform: psx + basename: weapon1 + base_path: .. + build_path: build/us + target_path: disks/us/BIN/WEAPON1.BIN + asm_path: asm/us/weapon1 + asset_path: assets/weapon1 + src_path: src/weapon + ld_script_path: build/us/weapon1.ld + compiler: GCC + symbol_addrs_path: + - config/symbols.us.txt + - config/symbols.us.weapon1.txt + - config/symbols.us.weapon1.txt.in + undefined_funcs_auto_path: build/us/config/undefined_funcs_auto.us.weapon1.txt + undefined_syms_auto_path: build/us/config/undefined_syms_auto.us.weapon1.txt + find_file_boundaries: yes + use_legacy_include_asm: no + extensions_path: tools/splat_ext + symbol_name_format: $SEG_$VRAM + disassemble_all: true + disasm_unknown: true + global_vram_start: 0x80010000 + section_order: + - ".data" + - ".rodata" + - ".text" + - ".bss" + ld_generate_symbol_per_data_segment: true +sha1: 8370dceda3aaca4320a677f3cb291b661b50f876 +segments: + - name: f1_000 + type: grey4 + start: 0x00000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon1 + start: 0x04000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x04000, .data, w_init] + - [0x04040, .data, w_000] + - [0x050D0, .data, right_hand] + - [0x050D4, c, w_000] + - name: f1_001 + type: grey4 + start: 0x07000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x0B000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x0B000, .data, w_init] + - [0x0B040, data, w_001_c] + - [0x0BA44, data, w_001] + - [0x0BFF4, data, right_hand_001] + - [0x0BFF8, data, w_001_ro] + - [0x0C014, asm, w_001_c] + - name: f1_002 + type: grey4 + start: 0x0E000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x12000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x12000, .data, w_init] + - [0x12040, .data, w_002] + - [0x12BD8, .data, right_hand] + - [0x12BDC, c, w_002] + - name: f1_003 + type: grey4 + start: 0x15000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x19000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x19000, .data, w_init] + - [0x19040, data, w1_003] + - [0x19C40, asm, w_003] + - name: f1_004 + type: grey4 + start: 0x1C000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x20000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x20000, .data, w_init] + - [0x20040, data, w1_004] + - [0x2131C, asm, w_004] + - name: f1_005 + type: grey4 + start: 0x23000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x27000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x27000, .data, w_init] + - [0x27040, data, w1_005] + - [0x28318, data, left_hand_005] + - [0x2831C, asm, w_005] + - name: f1_006 + type: grey4 + start: 0x2A000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x2E000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x2E000, .data, w_init] + - [0x2E040, data, w1_006] + - [0x2EC3C, data, left_hand_006] + - [0x2EC40, data, w_006_ro] + - [0x2EC54, asm, w_006] + - name: f1_007 + type: grey4 + start: 0x31000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x35000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x35000, .data, w_init] + - [0x35040, .data, w_007] + - [0x35C9C, .data, right_hand] + - [0x35CA0, c, w_007] + - name: f1_008 + type: grey4 + start: 0x38000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x3C000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x3C000, .data, w_init] + - [0x3C040, .data, w_008] + - [0x3CAC0, .data, right_hand] + - [0x3CAC4, .rodata, w_008] + - [0x3CB4C, c, w_008] + - name: f1_009 + type: grey4 + start: 0x3F000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x43000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x43000, .data, w_init] + - [0x43040, data, w1_009] + # - [0x43B4C, asm, w_009] + - name: f1_010 + type: grey4 + start: 0x46000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x4A000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x4A000, .data, w_init] + - [0x4A040, data, w1_010] + # - [0x4ACC0, asm, w_010] + - name: f1_011 + type: grey4 + start: 0x4D000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x51000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x51000, .data, w_init] + - [0x51040, data, w_011_c] + - [0x51958, data, w_011] + - [0x51C3C, data, right_hand_011] + - [0x51C40, data, w_011_ro] + #- [0x51CDC, asm, w_011] + - name: f1_012 + type: grey4 + start: 0x54000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x58000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x58000, .data, w_init] + - [0x58040, .data, w_012] + - [0x58AC8, .data, right_hand] + - [0x58ACC, c, w_012] + - [0x59B28, .bss, w_012] + - name: f1_013 + type: grey4 + start: 0x5B000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x5F000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x5F000, .data, w_init] + - [0x5F040, data, w1_013] + # - [0x5F62C, asm, w_013] + - name: f1_014 + type: grey4 + start: 0x62000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x66000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x66000, .data, w_init] + - [0x66040, data, w1_014] + - [0x665BC, asm, w_014] + - name: f1_015 + type: grey4 + start: 0x69000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x6D000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x6D000, .data, w_init] + - [0x6D040, data, w1_015] + - [0x6D7E4, asm, w_015] + - name: f1_016 + type: grey4 + start: 0x70000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x74000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x74000, .data, w_init] + - [0x74040, data, w1_016] + - [0x7460C, asm, w_016] + - name: f1_017 + type: grey4 + start: 0x77000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x7B000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x7B000, .data, w_init] + - [0x7B040, data, w1_017] + - [0x7B3A8, data, right_hand] + - [0x7B3AC, data, w1_017_c] + - name: f1_018 + type: grey4 + start: 0x7E000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x82000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x82000, .data, w_init] + - [0x82040, data, w1_018] + - [0x82740, asm, w_018] + - name: f1_019 + type: grey4 + start: 0x85000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x89000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x89000, .data, w_init] + - [0x89040, data, w1_019] + - [0x89554, asm, w_019] + - name: f1_020 + type: grey4 + start: 0x8C000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x90000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x90000, .data, w_init] + - [0x90040, data, w1_020] + - [0x90BC8, asm, w_020] + - name: f1_021 + type: grey4 + start: 0x93000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x97000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x97000, .data, w_init] + - [0x97040, data, w1_021] + - [0x977B4, asm, w_021] + - name: f1_022 + type: grey4 + start: 0x9A000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x9E000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x9E000, .data, w_init] + - [0x9E040, data, w1_022] + - [0x9E814, asm, w_022] + - name: f1_023 + type: grey4 + start: 0xA1000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xA5000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xA5000, .data, w_init] + - [0xA5040, data, w1_023] + - [0xA5D80, asm, w_023] + - name: f1_024 + type: grey4 + start: 0xA8000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xAC000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xAC000, .data, w_init] + - [0xAC040, data, w1_024] + - [0xACDE0, asm, w_024] + - name: f1_025 + type: grey4 + start: 0xAF000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xB3000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xB3000, .data, w_init] + - [0xB3040, data, w1_025] + # - [0xB3B74, asm, w_025] + - name: f1_026 + type: grey4 + start: 0xB6000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xBA000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xBA000, .data, w_init] + - [0xBA040, data, w1_026] + # - [0xBAB9C, asm, w_026] + - name: f1_027 + type: grey4 + start: 0xBD000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xC1000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xC1000, .data, w_init] + - [0xC1040, data, w1_027] + - [0xC1D54, asm, w_027] + - name: f1_028 + type: grey4 + start: 0xC4000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xC8000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xC8000, .data, w_init] + - [0xC8040, data, w1_028] + # - [0xC8BF4, asm, w_028] + - name: f1_029 + type: grey4 + start: 0xCB000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xCF000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xCF000, .data, w_init] + - [0xCF040, data, w1_029] + - [0xCFDD8, asm, w_029] + - name: f1_030 + type: grey4 + start: 0xD2000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xD6000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xD6000, .data, w_init] + - [0xD6040, data, w1_030] + - [0xD66DC, asm, w_030] + - name: f1_031 + type: grey4 + start: 0xD9000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xDD000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xDD000, .data, w_init] + - [0xDD040, data, w1_031] + - [0xDD918, asm, w_031] + - name: f1_032 + type: grey4 + start: 0xE0000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xE4000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xE4000, .data, w_init] + - [0xE4040, data, w1_032] + - [0xE4924, asm, w_032] + - name: f1_033 + type: grey4 + start: 0xE7000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xEB000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xEB000, .data, w_init] + - [0xEB040, data, w1_033] + - [0xEBC58, asm, w_033] + - name: f1_034 + type: grey4 + start: 0xEE000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xF2000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xF2000, .data, w_init] + - [0xF2040, .data, w_034] + - [0xF294C, .data, right_hand] + - [0xF2950, c, w_034] + - name: f1_035 + type: grey4 + start: 0xF5000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0xF9000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0xF9000, .data, w_init] + - [0xF9040, .data, w_035] + - [0xF9548, .data, right_hand] + - [0xF954C, c, w_035] + - name: f1_036 + type: grey4 + start: 0xFC000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x100000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x100000, .data, w_init] + - [0x100040, data, w1_036] + - [0x10055C, asm, w_036] + - name: f1_037 + type: grey4 + start: 0x103000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x107000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x107000, .data, w_init] + - [0x107040, .data, w_037] + - [0x1077C0, .data, right_hand] + - [0x1077C4, c, w_037] + - name: f1_038 + type: grey4 + start: 0x10A000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x10E000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x10E000, data, w_init] + - [0x10E040, data, w1_038] + - [0x10EDEC, asm, w_038] + - name: f1_039 + type: grey4 + start: 0x111000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x115000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x115000, .data, w_init] + - [0x115040, data, w1_039] + - [0x115DEC, asm, w_039] + - name: f1_040 + type: grey4 + start: 0x118000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x11C000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x11C000, .data, w_init] + - [0x11C040, .data, w_040] + - [0x11C870, .data, right_hand] + - [0x11C874, c, w_040] + - [0x11D540, .bss, w_040] + - name: f1_041 + type: grey4 + start: 0x11F000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x123000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x123000, .data, w_init] + - [0x123040, .data, w_041] + - [0x12355C, .data, right_hand] + - [0x123560, .rodata, w_041] + - [0x123574, c, w_041] + - [0x124200, .bss, w_041] + - name: f1_042 + type: grey4 + start: 0x126000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x12A000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x12A000, .data, w_init] + - [0x12A040, data, w1_042] + - [0x12A764, asm, w_042] + - name: f1_043 + type: grey4 + start: 0x12D000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x131000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x131000, .data, w_init] + - [0x131040, .data, w_043] + - [0x132058, .data, right_hand] + - [0x13205C, c, w_043] + - name: f1_044 + type: grey4 + start: 0x134000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x138000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x138000, .data, w_init] + - [0x138040, .data, w_044] + - [0x1382A4, .data, right_hand] + - [0x1382A8, .rodata, w_044] + - [0x1382C0, c, w_044] + - name: f1_045 + type: grey4 + start: 0x13B000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x13F000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x13F000, .data, w_init] + - [0x13F040, .data, w_045] + - [0x13F374, .data, right_hand] + - [0x13F378, c, w_045] + - [0x1403B8, .bss, w_045] + - name: f1_046 + type: grey4 + start: 0x142000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x146000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x146000, .data, w_init] + - [0x146040, .data, w_046] + - [0x146C60, .data, right_hand] + - [0x146C64, c, w_046] + - name: f1_047 + type: grey4 + start: 0x149000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x14D000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x14D000, .data, w_init] + - [0x14D040, data, w1_047] + - [0x14D568, asm, w_047] + - name: f1_048 + type: grey4 + start: 0x150000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x154000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x154000, .data, w_init] + - [0x154040, data, w1_048] + - [0x155050, asm, w_048] + - name: f1_049 + type: grey4 + start: 0x157000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x15B000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x15B000, .data, w_init] + - [0x15B040, data, w1_049] + - [0x15C14C, asm, w_049] + - name: f1_050 + type: grey4 + start: 0x15E000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x162000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x162000, .data, w_init] + - [0x162040, .data, w_050] + - [0x16307C, .data, right_hand] + - [0x163080, c, w_050] + - [0x164bf8, .bss, w_050] + - name: f1_051 + type: grey4 + start: 0x165000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x169000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + # identical to weapon0 except for 1 byte + - [0x169000, .data, w_init] + - [0x169040, data, w1_051] + - [0x169ED4, asm, w_051] + - name: f1_052 + type: grey4 + start: 0x16C000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x170000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x170000, .data, w_init] + - [0x170040, .data, w_052] + - [0x170C20, .data, right_hand] + - [0x170C24, .rodata, w_052] + - [0x170CB0, c, w_052] + - [0x172B84, .bss, w_052] + - name: f1_053 + type: grey4 + start: 0x173000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x177000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x177000, .data, w_init] + - [0x177040, data, w1_053] + - [0x178280, asm, w_053] + - name: f1_054 + type: grey4 + start: 0x17A000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x17E000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x17E000, .data, w_init] + - [0x17E040, data, w1_054] + - [0x17EF0C, asm, w_054] + - name: f1_055 + type: grey4 + start: 0x181000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x185000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x185000, .data, w_init] + - [0x185040, data, w1_055] + - [0x1861A0, asm, w_055] + - name: f1_056 + type: grey4 + start: 0x188000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x18C000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x18C000, .data, w_init] + - [0x18C040, data, w1_056] + - [0x18D060, asm, w_056] + - name: f1_057 + type: grey4 + start: 0x18F000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x193000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x193000, .data, w_init] + - [0x193040, data, w1_057] + - [0x1940B4, asm, w_057] + - name: f1_058 + type: grey4 + start: 0x196000 + vram: 0 + width: 256 + height: 128 + - type: code + exclusive_ram_id: weapon + start: 0x19A000 + vram: 0x8017D000 + align: 4 + subalign: 4 + subsegments: + - [0x19A000, .data, w_init] + - [0x19A040, data, w1_058] + # - [0x19AC50, asm, w_058] + - [0x19D000] + diff --git a/config/symbols.pspeu.w1_012.txt b/config/symbols.pspeu.w1_012.txt index 70843fada..5cec234ed 100644 --- a/config/symbols.pspeu.w1_012.txt +++ b/config/symbols.pspeu.w1_012.txt @@ -1 +1 @@ -w1_012_Load = 0x092F8450; +WeaponLoad = 0x092F8450; diff --git a/config/symbols.us.weapon1.txt b/config/symbols.us.weapon1.txt new file mode 100644 index 000000000..e69de29bb diff --git a/config/symbols.us.weapon1.txt.in b/config/symbols.us.weapon1.txt.in new file mode 100644 index 000000000..f0b8a0f4b --- /dev/null +++ b/config/symbols.us.weapon1.txt.in @@ -0,0 +1,1002 @@ +EntityWeaponAttack = 0x8017e474; // rom:0x4000 allow_duplicated:True +EntityWeaponAttack = 0x8017e3b4; // rom:0xb000 allow_duplicated:True +EntityWeaponAttack = 0x8017df7c; // rom:0x12000 allow_duplicated:True +EntityWeaponAttack = 0x8017dfe0; // rom:0x19000 allow_duplicated:True +EntityWeaponAttack = 0x8017e6bc; // rom:0x20000 allow_duplicated:True +EntityWeaponAttack = 0x8017e6bc; // rom:0x27000 allow_duplicated:True +EntityWeaponAttack = 0x8017dff4; // rom:0x2e000 allow_duplicated:True +EntityWeaponAttack = 0x8017e040; // rom:0x35000 allow_duplicated:True +EntityWeaponAttack = 0x8017deec; // rom:0x3c000 allow_duplicated:True +EntityWeaponAttack = 0x8017deec; // rom:0x43000 allow_duplicated:True +EntityWeaponAttack = 0x8017e164; // rom:0x4a000 allow_duplicated:True +EntityWeaponAttack = 0x8017e07c; // rom:0x51000 allow_duplicated:True +EntityWeaponAttack = 0x8017de6c; // rom:0x58000 allow_duplicated:True +EntityWeaponAttack = 0x8017dac4; // rom:0x5f000 allow_duplicated:True +EntityWeaponAttack = 0x8017d95c; // rom:0x66000 allow_duplicated:True +EntityWeaponAttack = 0x8017db84; // rom:0x6d000 allow_duplicated:True +EntityWeaponAttack = 0x8017d9ac; // rom:0x74000 allow_duplicated:True +EntityWeaponAttack = 0x8017d74c; // rom:0x7b000 allow_duplicated:True +EntityWeaponAttack = 0x8017dbe4; // rom:0x82000 allow_duplicated:True +EntityWeaponAttack = 0x8017d8f4; // rom:0x89000 allow_duplicated:True +EntityWeaponAttack = 0x8017df68; // rom:0x90000 allow_duplicated:True +EntityWeaponAttack = 0x8017e0a8; // rom:0x97000 allow_duplicated:True +EntityWeaponAttack = 0x8017dbb4; // rom:0x9e000 allow_duplicated:True +EntityWeaponAttack = 0x8017e120; // rom:0xa5000 allow_duplicated:True +EntityWeaponAttack = 0x8017e180; // rom:0xac000 allow_duplicated:True +EntityWeaponAttack = 0x8017df7c; // rom:0xb3000 allow_duplicated:True +EntityWeaponAttack = 0x8017df3c; // rom:0xba000 allow_duplicated:True +EntityWeaponAttack = 0x8017e1f8; // rom:0xc1000 allow_duplicated:True +EntityWeaponAttack = 0x8017df94; // rom:0xc8000 allow_duplicated:True +EntityWeaponAttack = 0x8017e168; // rom:0xcf000 allow_duplicated:True +EntityWeaponAttack = 0x8017d9e4; // rom:0xd6000 allow_duplicated:True +EntityWeaponAttack = 0x8017dcb8; // rom:0xdd000 allow_duplicated:True +EntityWeaponAttack = 0x8017dcc4; // rom:0xe4000 allow_duplicated:True +EntityWeaponAttack = 0x8017dff8; // rom:0xeb000 allow_duplicated:True +EntityWeaponAttack = 0x8017dcf0; // rom:0xf2000 allow_duplicated:True +EntityWeaponAttack = 0x8017d8ec; // rom:0xf9000 allow_duplicated:True +EntityWeaponAttack = 0x8017d8fc; // rom:0x100000 allow_duplicated:True +EntityWeaponAttack = 0x8017db64; // rom:0x107000 allow_duplicated:True +EntityWeaponAttack = 0x8017e18c; // rom:0x10e000 allow_duplicated:True +EntityWeaponAttack = 0x8017e18c; // rom:0x115000 allow_duplicated:True +EntityWeaponAttack = 0x8017dc94; // rom:0x11c000 allow_duplicated:True +EntityWeaponAttack = 0x8017dc08; // rom:0x123000 allow_duplicated:True +EntityWeaponAttack = 0x8017dc88; // rom:0x12a000 allow_duplicated:True +EntityWeaponAttack = 0x8017e3fc; // rom:0x131000 allow_duplicated:True +EntityWeaponAttack = 0x8017d580; // rom:0x138000 allow_duplicated:True +EntityWeaponAttack = 0x8017d7d0; // rom:0x13f000 allow_duplicated:True +EntityWeaponAttack = 0x8017e004; // rom:0x146000 allow_duplicated:True +EntityWeaponAttack = 0x8017d908; // rom:0x14d000 allow_duplicated:True +EntityWeaponAttack = 0x8017e3f0; // rom:0x154000 allow_duplicated:True +EntityWeaponAttack = 0x8017e4ec; // rom:0x15b000 allow_duplicated:True +EntityWeaponAttack = 0x8017e420; // rom:0x162000 allow_duplicated:True +EntityWeaponAttack = 0x8017e51c; // rom:0x169000 allow_duplicated:True +EntityWeaponAttack = 0x8017e050; // rom:0x170000 allow_duplicated:True +EntityWeaponAttack = 0x8017e620; // rom:0x177000 allow_duplicated:True +EntityWeaponAttack = 0x8017e2ac; // rom:0x17e000 allow_duplicated:True +EntityWeaponAttack = 0x8017e540; // rom:0x185000 allow_duplicated:True +EntityWeaponAttack = 0x8017e400; // rom:0x18c000 allow_duplicated:True +EntityWeaponAttack = 0x8017e454; // rom:0x193000 allow_duplicated:True +EntityWeaponAttack = 0x8017dff0; // rom:0x19a000 allow_duplicated:True +func_ptr_80170004 = 0x8017e690; // rom:0x4000 allow_duplicated:True +func_ptr_80170004 = 0x8017eccc; // rom:0xb000 allow_duplicated:True +func_ptr_80170004 = 0x8017e190; // rom:0x12000 allow_duplicated:True +func_ptr_80170004 = 0x8017e1fc; // rom:0x19000 allow_duplicated:True +func_ptr_80170004 = 0x8017e8fc; // rom:0x20000 allow_duplicated:True +func_ptr_80170004 = 0x8017e928; // rom:0x27000 allow_duplicated:True +func_ptr_80170004 = 0x8017e210; // rom:0x2e000 allow_duplicated:True +func_ptr_80170004 = 0x8017e2b8; // rom:0x35000 allow_duplicated:True +func_ptr_80170004 = 0x8017e2fc; // rom:0x3c000 allow_duplicated:True +func_ptr_80170004 = 0x8017e2fc; // rom:0x43000 allow_duplicated:True +func_ptr_80170004 = 0x8017e5e4; // rom:0x4a000 allow_duplicated:True +func_ptr_80170004 = 0x8017e48c; // rom:0x51000 allow_duplicated:True +func_ptr_80170004 = 0x8017e484; // rom:0x58000 allow_duplicated:True +func_ptr_80170004 = 0x8017e148; // rom:0x5f000 allow_duplicated:True +func_ptr_80170004 = 0x8017e2c8; // rom:0x66000 allow_duplicated:True +func_ptr_80170004 = 0x8017df14; // rom:0x6d000 allow_duplicated:True +func_ptr_80170004 = 0x8017dd90; // rom:0x74000 allow_duplicated:True +func_ptr_80170004 = 0x8017e084; // rom:0x7b000 allow_duplicated:True +func_ptr_80170004 = 0x8017df10; // rom:0x82000 allow_duplicated:True +func_ptr_80170004 = 0x8017dd44; // rom:0x89000 allow_duplicated:True +func_ptr_80170004 = 0x8017efd0; // rom:0x90000 allow_duplicated:True +func_ptr_80170004 = 0x8017e754; // rom:0x97000 allow_duplicated:True +func_ptr_80170004 = 0x8017ddb0; // rom:0x9e000 allow_duplicated:True +func_ptr_80170004 = 0x8017e5b0; // rom:0xa5000 allow_duplicated:True +func_ptr_80170004 = 0x8017e69c; // rom:0xac000 allow_duplicated:True +func_ptr_80170004 = 0x8017e390; // rom:0xb3000 allow_duplicated:True +func_ptr_80170004 = 0x8017e34c; // rom:0xba000 allow_duplicated:True +func_ptr_80170004 = 0x8017e608; // rom:0xc1000 allow_duplicated:True +func_ptr_80170004 = 0x8017e3a4; // rom:0xc8000 allow_duplicated:True +func_ptr_80170004 = 0x8017e650; // rom:0xcf000 allow_duplicated:True +func_ptr_80170004 = 0x8017dbe0; // rom:0xd6000 allow_duplicated:True +func_ptr_80170004 = 0x8017df18; // rom:0xdd000 allow_duplicated:True +func_ptr_80170004 = 0x8017dfb0; // rom:0xe4000 allow_duplicated:True +func_ptr_80170004 = 0x8017e258; // rom:0xeb000 allow_duplicated:True +func_ptr_80170004 = 0x8017df0c; // rom:0xf2000 allow_duplicated:True +func_ptr_80170004 = 0x8017db08; // rom:0xf9000 allow_duplicated:True +func_ptr_80170004 = 0x8017db18; // rom:0x100000 allow_duplicated:True +func_ptr_80170004 = 0x8017e268; // rom:0x107000 allow_duplicated:True +func_ptr_80170004 = 0x8017e3e8; // rom:0x10e000 allow_duplicated:True +func_ptr_80170004 = 0x8017e3e8; // rom:0x115000 allow_duplicated:True +func_ptr_80170004 = 0x8017e010; // rom:0x11c000 allow_duplicated:True +func_ptr_80170004 = 0x8017de8c; // rom:0x123000 allow_duplicated:True +func_ptr_80170004 = 0x8017e004; // rom:0x12a000 allow_duplicated:True +func_ptr_80170004 = 0x8017e920; // rom:0x131000 allow_duplicated:True +func_ptr_80170004 = 0x8017deb4; // rom:0x138000 allow_duplicated:True +func_ptr_80170004 = 0x8017d8bc; // rom:0x13f000 allow_duplicated:True +func_ptr_80170004 = 0x8017e698; // rom:0x146000 allow_duplicated:True +func_ptr_80170004 = 0x8017e470; // rom:0x14d000 allow_duplicated:True +func_ptr_80170004 = 0x8017e980; // rom:0x154000 allow_duplicated:True +func_ptr_80170004 = 0x8017ea48; // rom:0x15b000 allow_duplicated:True +func_ptr_80170004 = 0x8017ebf4; // rom:0x162000 allow_duplicated:True +func_ptr_80170004 = 0x8017e7bc; // rom:0x169000 allow_duplicated:True +func_ptr_80170004 = 0x8017f568; // rom:0x170000 allow_duplicated:True +func_ptr_80170004 = 0x8017e914; // rom:0x177000 allow_duplicated:True +func_ptr_80170004 = 0x8017e888; // rom:0x17e000 allow_duplicated:True +func_ptr_80170004 = 0x8017e7b0; // rom:0x185000 allow_duplicated:True +func_ptr_80170004 = 0x8017e998; // rom:0x18c000 allow_duplicated:True +func_ptr_80170004 = 0x8017e670; // rom:0x193000 allow_duplicated:True +func_ptr_80170004 = 0x8017e410; // rom:0x19a000 allow_duplicated:True +func_ptr_80170008 = 0x8017e698; // rom:0x4000 allow_duplicated:True +func_ptr_80170008 = 0x8017f1fc; // rom:0xb000 allow_duplicated:True +func_ptr_80170008 = 0x8017e198; // rom:0x12000 allow_duplicated:True +func_ptr_80170008 = 0x8017e204; // rom:0x19000 allow_duplicated:True +func_ptr_80170008 = 0x8017e904; // rom:0x20000 allow_duplicated:True +func_ptr_80170008 = 0x8017e930; // rom:0x27000 allow_duplicated:True +func_ptr_80170008 = 0x8017e798; // rom:0x2e000 allow_duplicated:True +func_ptr_80170008 = 0x8017e6fc; // rom:0x35000 allow_duplicated:True +func_ptr_80170008 = 0x8017e304; // rom:0x3c000 allow_duplicated:True +func_ptr_80170008 = 0x8017e304; // rom:0x43000 allow_duplicated:True +func_ptr_80170008 = 0x8017e6fc; // rom:0x4a000 allow_duplicated:True +func_ptr_80170008 = 0x8017e494; // rom:0x51000 allow_duplicated:True +func_ptr_80170008 = 0x8017e9d0; // rom:0x58000 allow_duplicated:True +func_ptr_80170008 = 0x8017e240; // rom:0x5f000 allow_duplicated:True +func_ptr_80170008 = 0x8017e51c; // rom:0x66000 allow_duplicated:True +func_ptr_80170008 = 0x8017e00c; // rom:0x6d000 allow_duplicated:True +func_ptr_80170008 = 0x8017dea0; // rom:0x74000 allow_duplicated:True +func_ptr_80170008 = 0x8017e08c; // rom:0x7b000 allow_duplicated:True +func_ptr_80170008 = 0x8017e14c; // rom:0x82000 allow_duplicated:True +func_ptr_80170008 = 0x8017dd4c; // rom:0x89000 allow_duplicated:True +func_ptr_80170008 = 0x8017efd8; // rom:0x90000 allow_duplicated:True +func_ptr_80170008 = 0x8017eb10; // rom:0x97000 allow_duplicated:True +func_ptr_80170008 = 0x8017df18; // rom:0x9e000 allow_duplicated:True +func_ptr_80170008 = 0x8017e5b8; // rom:0xa5000 allow_duplicated:True +func_ptr_80170008 = 0x8017e6a4; // rom:0xac000 allow_duplicated:True +func_ptr_80170008 = 0x8017e398; // rom:0xb3000 allow_duplicated:True +func_ptr_80170008 = 0x8017e354; // rom:0xba000 allow_duplicated:True +func_ptr_80170008 = 0x8017e610; // rom:0xc1000 allow_duplicated:True +func_ptr_80170008 = 0x8017e3ac; // rom:0xc8000 allow_duplicated:True +func_ptr_80170008 = 0x8017e7e0; // rom:0xcf000 allow_duplicated:True +func_ptr_80170008 = 0x8017e7ec; // rom:0xd6000 allow_duplicated:True +func_ptr_80170008 = 0x8017df20; // rom:0xdd000 allow_duplicated:True +func_ptr_80170008 = 0x8017dfb8; // rom:0xe4000 allow_duplicated:True +func_ptr_80170008 = 0x8017e260; // rom:0xeb000 allow_duplicated:True +func_ptr_80170008 = 0x8017e388; // rom:0xf2000 allow_duplicated:True +func_ptr_80170008 = 0x8017db10; // rom:0xf9000 allow_duplicated:True +func_ptr_80170008 = 0x8017db20; // rom:0x100000 allow_duplicated:True +func_ptr_80170008 = 0x8017e83c; // rom:0x107000 allow_duplicated:True +func_ptr_80170008 = 0x8017e7dc; // rom:0x10e000 allow_duplicated:True +func_ptr_80170008 = 0x8017e9c0; // rom:0x115000 allow_duplicated:True +func_ptr_80170008 = 0x8017e2dc; // rom:0x11c000 allow_duplicated:True +func_ptr_80170008 = 0x8017e198; // rom:0x123000 allow_duplicated:True +func_ptr_80170008 = 0x8017e2bc; // rom:0x12a000 allow_duplicated:True +func_ptr_80170008 = 0x8017eb74; // rom:0x131000 allow_duplicated:True +func_ptr_80170008 = 0x8017debc; // rom:0x138000 allow_duplicated:True +func_ptr_80170008 = 0x8017db4c; // rom:0x13f000 allow_duplicated:True +func_ptr_80170008 = 0x8017ee58; // rom:0x146000 allow_duplicated:True +func_ptr_80170008 = 0x8017e63c; // rom:0x14d000 allow_duplicated:True +func_ptr_80170008 = 0x8017ef4c; // rom:0x154000 allow_duplicated:True +func_ptr_80170008 = 0x8017ed2c; // rom:0x15b000 allow_duplicated:True +func_ptr_80170008 = 0x8017efdc; // rom:0x162000 allow_duplicated:True +func_ptr_80170008 = 0x8017ea64; // rom:0x169000 allow_duplicated:True +func_ptr_80170008 = 0x8017e604; // rom:0x170000 allow_duplicated:True +func_ptr_80170008 = 0x8017efcc; // rom:0x177000 allow_duplicated:True +func_ptr_80170008 = 0x8017e890; // rom:0x17e000 allow_duplicated:True +func_ptr_80170008 = 0x8017ebc4; // rom:0x185000 allow_duplicated:True +func_ptr_80170008 = 0x8017f050; // rom:0x18c000 allow_duplicated:True +func_ptr_80170008 = 0x8017e678; // rom:0x193000 allow_duplicated:True +func_ptr_80170008 = 0x8017e418; // rom:0x19a000 allow_duplicated:True +func_ptr_8017000C = 0x8017e6a0; // rom:0x4000 allow_duplicated:True +func_ptr_8017000C = 0x8017f3d0; // rom:0xb000 allow_duplicated:True +func_ptr_8017000C = 0x8017e1a0; // rom:0x12000 allow_duplicated:True +func_ptr_8017000C = 0x8017e20c; // rom:0x19000 allow_duplicated:True +func_ptr_8017000C = 0x8017e90c; // rom:0x20000 allow_duplicated:True +func_ptr_8017000C = 0x8017e938; // rom:0x27000 allow_duplicated:True +func_ptr_8017000C = 0x8017e958; // rom:0x2e000 allow_duplicated:True +func_ptr_8017000C = 0x8017e8b8; // rom:0x35000 allow_duplicated:True +func_ptr_8017000C = 0x8017e30c; // rom:0x3c000 allow_duplicated:True +func_ptr_8017000C = 0x8017e30c; // rom:0x43000 allow_duplicated:True +func_ptr_8017000C = 0x8017e704; // rom:0x4a000 allow_duplicated:True +func_ptr_8017000C = 0x8017e49c; // rom:0x51000 allow_duplicated:True +func_ptr_8017000C = 0x8017eac8; // rom:0x58000 allow_duplicated:True +func_ptr_8017000C = 0x8017e954; // rom:0x5f000 allow_duplicated:True +func_ptr_8017000C = 0x8017e524; // rom:0x66000 allow_duplicated:True +func_ptr_8017000C = 0x8017e17c; // rom:0x6d000 allow_duplicated:True +func_ptr_8017000C = 0x8017e234; // rom:0x74000 allow_duplicated:True +func_ptr_8017000C = 0x8017e094; // rom:0x7b000 allow_duplicated:True +func_ptr_8017000C = 0x8017e154; // rom:0x82000 allow_duplicated:True +func_ptr_8017000C = 0x8017dd54; // rom:0x89000 allow_duplicated:True +func_ptr_8017000C = 0x8017f1d8; // rom:0x90000 allow_duplicated:True +func_ptr_8017000C = 0x8017eb18; // rom:0x97000 allow_duplicated:True +func_ptr_8017000C = 0x8017df20; // rom:0x9e000 allow_duplicated:True +func_ptr_8017000C = 0x8017e5c0; // rom:0xa5000 allow_duplicated:True +func_ptr_8017000C = 0x8017e6ac; // rom:0xac000 allow_duplicated:True +func_ptr_8017000C = 0x8017e3a0; // rom:0xb3000 allow_duplicated:True +func_ptr_8017000C = 0x8017e35c; // rom:0xba000 allow_duplicated:True +func_ptr_8017000C = 0x8017e618; // rom:0xc1000 allow_duplicated:True +func_ptr_8017000C = 0x8017e3b4; // rom:0xc8000 allow_duplicated:True +func_ptr_8017000C = 0x8017e7e8; // rom:0xcf000 allow_duplicated:True +func_ptr_8017000C = 0x8017f3fc; // rom:0xd6000 allow_duplicated:True +func_ptr_8017000C = 0x8017df28; // rom:0xdd000 allow_duplicated:True +func_ptr_8017000C = 0x8017dfc0; // rom:0xe4000 allow_duplicated:True +func_ptr_8017000C = 0x8017e268; // rom:0xeb000 allow_duplicated:True +func_ptr_8017000C = 0x8017e390; // rom:0xf2000 allow_duplicated:True +func_ptr_8017000C = 0x8017db18; // rom:0xf9000 allow_duplicated:True +func_ptr_8017000C = 0x8017db28; // rom:0x100000 allow_duplicated:True +func_ptr_8017000C = 0x8017eb84; // rom:0x107000 allow_duplicated:True +func_ptr_8017000C = 0x8017e7e4; // rom:0x10e000 allow_duplicated:True +func_ptr_8017000C = 0x8017e9c8; // rom:0x115000 allow_duplicated:True +func_ptr_8017000C = 0x8017e434; // rom:0x11c000 allow_duplicated:True +func_ptr_8017000C = 0x8017e1a0; // rom:0x123000 allow_duplicated:True +func_ptr_8017000C = 0x8017e4e0; // rom:0x12a000 allow_duplicated:True +func_ptr_8017000C = 0x8017ed14; // rom:0x131000 allow_duplicated:True +func_ptr_8017000C = 0x8017dec4; // rom:0x138000 allow_duplicated:True +func_ptr_8017000C = 0x8017ddc8; // rom:0x13f000 allow_duplicated:True +func_ptr_8017000C = 0x8017ee60; // rom:0x146000 allow_duplicated:True +func_ptr_8017000C = 0x8017e644; // rom:0x14d000 allow_duplicated:True +func_ptr_8017000C = 0x8017f354; // rom:0x154000 allow_duplicated:True +func_ptr_8017000C = 0x8017f14c; // rom:0x15b000 allow_duplicated:True +func_ptr_8017000C = 0x8017f428; // rom:0x162000 allow_duplicated:True +func_ptr_8017000C = 0x8017f080; // rom:0x169000 allow_duplicated:True +func_ptr_8017000C = 0x8017e60c; // rom:0x170000 allow_duplicated:True +func_ptr_8017000C = 0x8017f28c; // rom:0x177000 allow_duplicated:True +func_ptr_8017000C = 0x8017e898; // rom:0x17e000 allow_duplicated:True +func_ptr_8017000C = 0x8017ebcc; // rom:0x185000 allow_duplicated:True +func_ptr_8017000C = 0x8017f058; // rom:0x18c000 allow_duplicated:True +func_ptr_8017000C = 0x8017e680; // rom:0x193000 allow_duplicated:True +func_ptr_8017000C = 0x8017e420; // rom:0x19a000 allow_duplicated:True +func_ptr_80170010 = 0x8017e6a8; // rom:0x4000 allow_duplicated:True +func_ptr_80170010 = 0x8017f3d8; // rom:0xb000 allow_duplicated:True +func_ptr_80170010 = 0x8017e1a8; // rom:0x12000 allow_duplicated:True +func_ptr_80170010 = 0x8017e214; // rom:0x19000 allow_duplicated:True +func_ptr_80170010 = 0x8017e914; // rom:0x20000 allow_duplicated:True +func_ptr_80170010 = 0x8017e940; // rom:0x27000 allow_duplicated:True +func_ptr_80170010 = 0x8017e960; // rom:0x2e000 allow_duplicated:True +func_ptr_80170010 = 0x8017e8c0; // rom:0x35000 allow_duplicated:True +func_ptr_80170010 = 0x8017e314; // rom:0x3c000 allow_duplicated:True +func_ptr_80170010 = 0x8017e314; // rom:0x43000 allow_duplicated:True +func_ptr_80170010 = 0x8017e70c; // rom:0x4a000 allow_duplicated:True +func_ptr_80170010 = 0x8017e4a4; // rom:0x51000 allow_duplicated:True +func_ptr_80170010 = 0x8017ead0; // rom:0x58000 allow_duplicated:True +func_ptr_80170010 = 0x8017ebb8; // rom:0x5f000 allow_duplicated:True +func_ptr_80170010 = 0x8017e52c; // rom:0x66000 allow_duplicated:True +func_ptr_80170010 = 0x8017ea04; // rom:0x6d000 allow_duplicated:True +func_ptr_80170010 = 0x8017e448; // rom:0x74000 allow_duplicated:True +func_ptr_80170010 = 0x8017e09c; // rom:0x7b000 allow_duplicated:True +func_ptr_80170010 = 0x8017e15c; // rom:0x82000 allow_duplicated:True +func_ptr_80170010 = 0x8017dd5c; // rom:0x89000 allow_duplicated:True +func_ptr_80170010 = 0x8017f1e0; // rom:0x90000 allow_duplicated:True +func_ptr_80170010 = 0x8017eb20; // rom:0x97000 allow_duplicated:True +func_ptr_80170010 = 0x8017df28; // rom:0x9e000 allow_duplicated:True +func_ptr_80170010 = 0x8017e5c8; // rom:0xa5000 allow_duplicated:True +func_ptr_80170010 = 0x8017e6b4; // rom:0xac000 allow_duplicated:True +func_ptr_80170010 = 0x8017e3a8; // rom:0xb3000 allow_duplicated:True +func_ptr_80170010 = 0x8017e364; // rom:0xba000 allow_duplicated:True +func_ptr_80170010 = 0x8017e620; // rom:0xc1000 allow_duplicated:True +func_ptr_80170010 = 0x8017e3bc; // rom:0xc8000 allow_duplicated:True +func_ptr_80170010 = 0x8017e7f0; // rom:0xcf000 allow_duplicated:True +func_ptr_80170010 = 0x8017f87c; // rom:0xd6000 allow_duplicated:True +func_ptr_80170010 = 0x8017df30; // rom:0xdd000 allow_duplicated:True +func_ptr_80170010 = 0x8017dfc8; // rom:0xe4000 allow_duplicated:True +func_ptr_80170010 = 0x8017e270; // rom:0xeb000 allow_duplicated:True +func_ptr_80170010 = 0x8017e398; // rom:0xf2000 allow_duplicated:True +func_ptr_80170010 = 0x8017db20; // rom:0xf9000 allow_duplicated:True +func_ptr_80170010 = 0x8017db30; // rom:0x100000 allow_duplicated:True +func_ptr_80170010 = 0x8017eb8c; // rom:0x107000 allow_duplicated:True +func_ptr_80170010 = 0x8017e7ec; // rom:0x10e000 allow_duplicated:True +func_ptr_80170010 = 0x8017e9d0; // rom:0x115000 allow_duplicated:True +func_ptr_80170010 = 0x8017e4e8; // rom:0x11c000 allow_duplicated:True +func_ptr_80170010 = 0x8017e1a8; // rom:0x123000 allow_duplicated:True +func_ptr_80170010 = 0x8017e594; // rom:0x12a000 allow_duplicated:True +func_ptr_80170010 = 0x8017ed1c; // rom:0x131000 allow_duplicated:True +func_ptr_80170010 = 0x8017decc; // rom:0x138000 allow_duplicated:True +func_ptr_80170010 = 0x8017e038; // rom:0x13f000 allow_duplicated:True +func_ptr_80170010 = 0x8017ee68; // rom:0x146000 allow_duplicated:True +func_ptr_80170010 = 0x8017e64c; // rom:0x14d000 allow_duplicated:True +func_ptr_80170010 = 0x8017f35c; // rom:0x154000 allow_duplicated:True +func_ptr_80170010 = 0x8017f458; // rom:0x15b000 allow_duplicated:True +func_ptr_80170010 = 0x8017f790; // rom:0x162000 allow_duplicated:True +func_ptr_80170010 = 0x8017f088; // rom:0x169000 allow_duplicated:True +func_ptr_80170010 = 0x8017e614; // rom:0x170000 allow_duplicated:True +func_ptr_80170010 = 0x8017f83c; // rom:0x177000 allow_duplicated:True +func_ptr_80170010 = 0x8017e8a0; // rom:0x17e000 allow_duplicated:True +func_ptr_80170010 = 0x8017ebd4; // rom:0x185000 allow_duplicated:True +func_ptr_80170010 = 0x8017f060; // rom:0x18c000 allow_duplicated:True +func_ptr_80170010 = 0x8017e688; // rom:0x193000 allow_duplicated:True +func_ptr_80170010 = 0x8017e428; // rom:0x19a000 allow_duplicated:True +func_ptr_80170014 = 0x8017e6b0; // rom:0x4000 allow_duplicated:True +func_ptr_80170014 = 0x8017f3e0; // rom:0xb000 allow_duplicated:True +func_ptr_80170014 = 0x8017e1b0; // rom:0x12000 allow_duplicated:True +func_ptr_80170014 = 0x8017e21c; // rom:0x19000 allow_duplicated:True +func_ptr_80170014 = 0x8017e91c; // rom:0x20000 allow_duplicated:True +func_ptr_80170014 = 0x8017e948; // rom:0x27000 allow_duplicated:True +func_ptr_80170014 = 0x8017e968; // rom:0x2e000 allow_duplicated:True +func_ptr_80170014 = 0x8017e8c8; // rom:0x35000 allow_duplicated:True +func_ptr_80170014 = 0x8017e31c; // rom:0x3c000 allow_duplicated:True +func_ptr_80170014 = 0x8017e31c; // rom:0x43000 allow_duplicated:True +func_ptr_80170014 = 0x8017e714; // rom:0x4a000 allow_duplicated:True +func_ptr_80170014 = 0x8017e4ac; // rom:0x51000 allow_duplicated:True +func_ptr_80170014 = 0x8017ead8; // rom:0x58000 allow_duplicated:True +func_ptr_80170014 = 0x8017ebc0; // rom:0x5f000 allow_duplicated:True +func_ptr_80170014 = 0x8017e534; // rom:0x66000 allow_duplicated:True +func_ptr_80170014 = 0x8017ed34; // rom:0x6d000 allow_duplicated:True +func_ptr_80170014 = 0x8017e5c4; // rom:0x74000 allow_duplicated:True +func_ptr_80170014 = 0x8017e0a4; // rom:0x7b000 allow_duplicated:True +func_ptr_80170014 = 0x8017e164; // rom:0x82000 allow_duplicated:True +func_ptr_80170014 = 0x8017dd64; // rom:0x89000 allow_duplicated:True +func_ptr_80170014 = 0x8017f1e8; // rom:0x90000 allow_duplicated:True +func_ptr_80170014 = 0x8017eb28; // rom:0x97000 allow_duplicated:True +func_ptr_80170014 = 0x8017df30; // rom:0x9e000 allow_duplicated:True +func_ptr_80170014 = 0x8017e5d0; // rom:0xa5000 allow_duplicated:True +func_ptr_80170014 = 0x8017e6bc; // rom:0xac000 allow_duplicated:True +func_ptr_80170014 = 0x8017e3b0; // rom:0xb3000 allow_duplicated:True +func_ptr_80170014 = 0x8017e36c; // rom:0xba000 allow_duplicated:True +func_ptr_80170014 = 0x8017e628; // rom:0xc1000 allow_duplicated:True +func_ptr_80170014 = 0x8017e3c4; // rom:0xc8000 allow_duplicated:True +func_ptr_80170014 = 0x8017e7f8; // rom:0xcf000 allow_duplicated:True +func_ptr_80170014 = 0x8017fbf4; // rom:0xd6000 allow_duplicated:True +func_ptr_80170014 = 0x8017df38; // rom:0xdd000 allow_duplicated:True +func_ptr_80170014 = 0x8017dfd0; // rom:0xe4000 allow_duplicated:True +func_ptr_80170014 = 0x8017e278; // rom:0xeb000 allow_duplicated:True +func_ptr_80170014 = 0x8017e3a0; // rom:0xf2000 allow_duplicated:True +func_ptr_80170014 = 0x8017db28; // rom:0xf9000 allow_duplicated:True +func_ptr_80170014 = 0x8017db38; // rom:0x100000 allow_duplicated:True +func_ptr_80170014 = 0x8017eb94; // rom:0x107000 allow_duplicated:True +func_ptr_80170014 = 0x8017e7f4; // rom:0x10e000 allow_duplicated:True +func_ptr_80170014 = 0x8017e9d8; // rom:0x115000 allow_duplicated:True +func_ptr_80170014 = 0x8017e4f0; // rom:0x11c000 allow_duplicated:True +func_ptr_80170014 = 0x8017e1b0; // rom:0x123000 allow_duplicated:True +func_ptr_80170014 = 0x8017e59c; // rom:0x12a000 allow_duplicated:True +func_ptr_80170014 = 0x8017ed24; // rom:0x131000 allow_duplicated:True +func_ptr_80170014 = 0x8017ded4; // rom:0x138000 allow_duplicated:True +func_ptr_80170014 = 0x8017e368; // rom:0x13f000 allow_duplicated:True +func_ptr_80170014 = 0x8017ee70; // rom:0x146000 allow_duplicated:True +func_ptr_80170014 = 0x8017e654; // rom:0x14d000 allow_duplicated:True +func_ptr_80170014 = 0x8017f364; // rom:0x154000 allow_duplicated:True +func_ptr_80170014 = 0x8017f720; // rom:0x15b000 allow_duplicated:True +func_ptr_80170014 = 0x8017fba8; // rom:0x162000 allow_duplicated:True +func_ptr_80170014 = 0x8017f090; // rom:0x169000 allow_duplicated:True +func_ptr_80170014 = 0x8017e61c; // rom:0x170000 allow_duplicated:True +func_ptr_80170014 = 0x8017f844; // rom:0x177000 allow_duplicated:True +func_ptr_80170014 = 0x8017e8a8; // rom:0x17e000 allow_duplicated:True +func_ptr_80170014 = 0x8017ebdc; // rom:0x185000 allow_duplicated:True +func_ptr_80170014 = 0x8017f068; // rom:0x18c000 allow_duplicated:True +func_ptr_80170014 = 0x8017e690; // rom:0x193000 allow_duplicated:True +func_ptr_80170014 = 0x8017e430; // rom:0x19a000 allow_duplicated:True +GetWeaponId = 0x8017e6b8; // rom:0x4000 allow_duplicated:True +GetWeaponId = 0x8017f3e8; // rom:0xb000 allow_duplicated:True +GetWeaponId = 0x8017e1b8; // rom:0x12000 allow_duplicated:True +GetWeaponId = 0x8017e224; // rom:0x19000 allow_duplicated:True +GetWeaponId = 0x8017e924; // rom:0x20000 allow_duplicated:True +GetWeaponId = 0x8017e950; // rom:0x27000 allow_duplicated:True +GetWeaponId = 0x8017e970; // rom:0x2e000 allow_duplicated:True +GetWeaponId = 0x8017e8d0; // rom:0x35000 allow_duplicated:True +GetWeaponId = 0x8017e324; // rom:0x3c000 allow_duplicated:True +GetWeaponId = 0x8017e324; // rom:0x43000 allow_duplicated:True +GetWeaponId = 0x8017e71c; // rom:0x4a000 allow_duplicated:True +GetWeaponId = 0x8017e4b4; // rom:0x51000 allow_duplicated:True +GetWeaponId = 0x8017eae0; // rom:0x58000 allow_duplicated:True +GetWeaponId = 0x8017ebc8; // rom:0x5f000 allow_duplicated:True +GetWeaponId = 0x8017e53c; // rom:0x66000 allow_duplicated:True +GetWeaponId = 0x8017ef80; // rom:0x6d000 allow_duplicated:True +GetWeaponId = 0x8017ed2c; // rom:0x74000 allow_duplicated:True +GetWeaponId = 0x8017e0ac; // rom:0x7b000 allow_duplicated:True +GetWeaponId = 0x8017e16c; // rom:0x82000 allow_duplicated:True +GetWeaponId = 0x8017dd6c; // rom:0x89000 allow_duplicated:True +GetWeaponId = 0x8017f1f0; // rom:0x90000 allow_duplicated:True +GetWeaponId = 0x8017eb30; // rom:0x97000 allow_duplicated:True +GetWeaponId = 0x8017df38; // rom:0x9e000 allow_duplicated:True +GetWeaponId = 0x8017e5d8; // rom:0xa5000 allow_duplicated:True +GetWeaponId = 0x8017e6c4; // rom:0xac000 allow_duplicated:True +GetWeaponId = 0x8017e3b8; // rom:0xb3000 allow_duplicated:True +GetWeaponId = 0x8017e374; // rom:0xba000 allow_duplicated:True +GetWeaponId = 0x8017e630; // rom:0xc1000 allow_duplicated:True +GetWeaponId = 0x8017e3cc; // rom:0xc8000 allow_duplicated:True +GetWeaponId = 0x8017e800; // rom:0xcf000 allow_duplicated:True +GetWeaponId = 0x8017fbfc; // rom:0xd6000 allow_duplicated:True +GetWeaponId = 0x8017df40; // rom:0xdd000 allow_duplicated:True +GetWeaponId = 0x8017dfd8; // rom:0xe4000 allow_duplicated:True +GetWeaponId = 0x8017e280; // rom:0xeb000 allow_duplicated:True +GetWeaponId = 0x8017e3a8; // rom:0xf2000 allow_duplicated:True +GetWeaponId = 0x8017db30; // rom:0xf9000 allow_duplicated:True +GetWeaponId = 0x8017db40; // rom:0x100000 allow_duplicated:True +GetWeaponId = 0x8017eb9c; // rom:0x107000 allow_duplicated:True +GetWeaponId = 0x8017e7fc; // rom:0x10e000 allow_duplicated:True +GetWeaponId = 0x8017e9e0; // rom:0x115000 allow_duplicated:True +GetWeaponId = 0x8017e4f8; // rom:0x11c000 allow_duplicated:True +GetWeaponId = 0x8017e1b8; // rom:0x123000 allow_duplicated:True +GetWeaponId = 0x8017e5a4; // rom:0x12a000 allow_duplicated:True +GetWeaponId = 0x8017ed2c; // rom:0x131000 allow_duplicated:True +GetWeaponId = 0x8017dedc; // rom:0x138000 allow_duplicated:True +GetWeaponId = 0x8017e370; // rom:0x13f000 allow_duplicated:True +GetWeaponId = 0x8017ee78; // rom:0x146000 allow_duplicated:True +GetWeaponId = 0x8017e65c; // rom:0x14d000 allow_duplicated:True +GetWeaponId = 0x8017f36c; // rom:0x154000 allow_duplicated:True +GetWeaponId = 0x8017f884; // rom:0x15b000 allow_duplicated:True +GetWeaponId = 0x8017fbb0; // rom:0x162000 allow_duplicated:True +GetWeaponId = 0x8017f098; // rom:0x169000 allow_duplicated:True +GetWeaponId = 0x8017e624; // rom:0x170000 allow_duplicated:True +GetWeaponId = 0x8017f84c; // rom:0x177000 allow_duplicated:True +GetWeaponId = 0x8017e8b0; // rom:0x17e000 allow_duplicated:True +GetWeaponId = 0x8017ebe4; // rom:0x185000 allow_duplicated:True +GetWeaponId = 0x8017f070; // rom:0x18c000 allow_duplicated:True +GetWeaponId = 0x8017e698; // rom:0x193000 allow_duplicated:True +GetWeaponId = 0x8017e438; // rom:0x19a000 allow_duplicated:True +LoadWeaponPalette = 0x8017e140; // rom:0x4000 allow_duplicated:True +LoadWeaponPalette = 0x8017e080; // rom:0xb000 allow_duplicated:True +LoadWeaponPalette = 0x8017dc48; // rom:0x12000 allow_duplicated:True +LoadWeaponPalette = 0x8017dcac; // rom:0x19000 allow_duplicated:True +LoadWeaponPalette = 0x8017e388; // rom:0x20000 allow_duplicated:True +LoadWeaponPalette = 0x8017e388; // rom:0x27000 allow_duplicated:True +LoadWeaponPalette = 0x8017dcc0; // rom:0x2e000 allow_duplicated:True +LoadWeaponPalette = 0x8017dd0c; // rom:0x35000 allow_duplicated:True +LoadWeaponPalette = 0x8017dbb8; // rom:0x3c000 allow_duplicated:True +LoadWeaponPalette = 0x8017dbb8; // rom:0x43000 allow_duplicated:True +LoadWeaponPalette = 0x8017dd2c; // rom:0x4a000 allow_duplicated:True +LoadWeaponPalette = 0x8017dd48; // rom:0x51000 allow_duplicated:True +LoadWeaponPalette = 0x8017db38; // rom:0x58000 allow_duplicated:True +LoadWeaponPalette = 0x8017d698; // rom:0x5f000 allow_duplicated:True +LoadWeaponPalette = 0x8017d628; // rom:0x66000 allow_duplicated:True +LoadWeaponPalette = 0x8017d850; // rom:0x6d000 allow_duplicated:True +LoadWeaponPalette = 0x8017d678; // rom:0x74000 allow_duplicated:True +LoadWeaponPalette = 0x8017d418; // rom:0x7b000 allow_duplicated:True +LoadWeaponPalette = 0x8017d7ac; // rom:0x82000 allow_duplicated:True +LoadWeaponPalette = 0x8017d5c0; // rom:0x89000 allow_duplicated:True +LoadWeaponPalette = 0x8017dc34; // rom:0x90000 allow_duplicated:True +LoadWeaponPalette = 0x8017d820; // rom:0x97000 allow_duplicated:True +LoadWeaponPalette = 0x8017d880; // rom:0x9e000 allow_duplicated:True +LoadWeaponPalette = 0x8017ddec; // rom:0xa5000 allow_duplicated:True +LoadWeaponPalette = 0x8017de4c; // rom:0xac000 allow_duplicated:True +LoadWeaponPalette = 0x8017dbe0; // rom:0xb3000 allow_duplicated:True +LoadWeaponPalette = 0x8017dc08; // rom:0xba000 allow_duplicated:True +LoadWeaponPalette = 0x8017ddc0; // rom:0xc1000 allow_duplicated:True +LoadWeaponPalette = 0x8017dc60; // rom:0xc8000 allow_duplicated:True +LoadWeaponPalette = 0x8017de44; // rom:0xcf000 allow_duplicated:True +LoadWeaponPalette = 0x8017d748; // rom:0xd6000 allow_duplicated:True +LoadWeaponPalette = 0x8017d984; // rom:0xdd000 allow_duplicated:True +LoadWeaponPalette = 0x8017d990; // rom:0xe4000 allow_duplicated:True +LoadWeaponPalette = 0x8017dcc4; // rom:0xeb000 allow_duplicated:True +LoadWeaponPalette = 0x8017d9bc; // rom:0xf2000 allow_duplicated:True +LoadWeaponPalette = 0x8017d5b8; // rom:0xf9000 allow_duplicated:True +LoadWeaponPalette = 0x8017d5c8; // rom:0x100000 allow_duplicated:True +LoadWeaponPalette = 0x8017d830; // rom:0x107000 allow_duplicated:True +LoadWeaponPalette = 0x8017de58; // rom:0x10e000 allow_duplicated:True +LoadWeaponPalette = 0x8017de58; // rom:0x115000 allow_duplicated:True +LoadWeaponPalette = 0x8017d8e0; // rom:0x11c000 allow_duplicated:True +LoadWeaponPalette = 0x8017d5e0; // rom:0x123000 allow_duplicated:True +LoadWeaponPalette = 0x8017d7d0; // rom:0x12a000 allow_duplicated:True +LoadWeaponPalette = 0x8017e0c8; // rom:0x131000 allow_duplicated:True +LoadWeaponPalette = 0x8017d32c; // rom:0x138000 allow_duplicated:True +LoadWeaponPalette = 0x8017d3e4; // rom:0x13f000 allow_duplicated:True +LoadWeaponPalette = 0x8017dcd0; // rom:0x146000 allow_duplicated:True +LoadWeaponPalette = 0x8017d5d4; // rom:0x14d000 allow_duplicated:True +LoadWeaponPalette = 0x8017e0bc; // rom:0x154000 allow_duplicated:True +LoadWeaponPalette = 0x8017e1b8; // rom:0x15b000 allow_duplicated:True +LoadWeaponPalette = 0x8017e0ec; // rom:0x162000 allow_duplicated:True +LoadWeaponPalette = 0x8017df40; // rom:0x169000 allow_duplicated:True +LoadWeaponPalette = 0x8017dd1c; // rom:0x170000 allow_duplicated:True +LoadWeaponPalette = 0x8017e2ec; // rom:0x177000 allow_duplicated:True +LoadWeaponPalette = 0x8017df78; // rom:0x17e000 allow_duplicated:True +LoadWeaponPalette = 0x8017e20c; // rom:0x185000 allow_duplicated:True +LoadWeaponPalette = 0x8017e0cc; // rom:0x18c000 allow_duplicated:True +LoadWeaponPalette = 0x8017e120; // rom:0x193000 allow_duplicated:True +LoadWeaponPalette = 0x8017dcbc; // rom:0x19a000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e6c0; // rom:0x4000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017f3f0; // rom:0xb000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e1c0; // rom:0x12000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e22c; // rom:0x19000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e92c; // rom:0x20000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e958; // rom:0x27000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e978; // rom:0x2e000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e8d8; // rom:0x35000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e32c; // rom:0x3c000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e32c; // rom:0x43000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e724; // rom:0x4a000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e4bc; // rom:0x51000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017eae8; // rom:0x58000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017ebd0; // rom:0x5f000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e544; // rom:0x66000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017ef88; // rom:0x6d000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017ed34; // rom:0x74000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e0b4; // rom:0x7b000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e174; // rom:0x82000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017dd74; // rom:0x89000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017f1f8; // rom:0x90000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017eb38; // rom:0x97000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017df40; // rom:0x9e000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e5e0; // rom:0xa5000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e6cc; // rom:0xac000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e3c0; // rom:0xb3000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e484; // rom:0xba000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e638; // rom:0xc1000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e4d8; // rom:0xc8000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e808; // rom:0xcf000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017fc04; // rom:0xd6000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017df48; // rom:0xdd000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017dfe0; // rom:0xe4000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e288; // rom:0xeb000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e3b0; // rom:0xf2000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017db38; // rom:0xf9000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017db48; // rom:0x100000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017eba4; // rom:0x107000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e804; // rom:0x10e000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e9e8; // rom:0x115000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e500; // rom:0x11c000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e1c0; // rom:0x123000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e5ac; // rom:0x12a000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017ed34; // rom:0x131000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017dee4; // rom:0x138000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e378; // rom:0x13f000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017ee80; // rom:0x146000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e664; // rom:0x14d000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017f374; // rom:0x154000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017f88c; // rom:0x15b000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017fbb8; // rom:0x162000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017f0a0; // rom:0x169000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e62c; // rom:0x170000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017f854; // rom:0x177000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e8b8; // rom:0x17e000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017ebec; // rom:0x185000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017f078; // rom:0x18c000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e6a0; // rom:0x193000 allow_duplicated:True +EntityWeaponShieldSpell = 0x8017e440; // rom:0x19a000 allow_duplicated:True +func_ptr_80170024 = 0x8017e6c8; // rom:0x4000 allow_duplicated:True +func_ptr_80170024 = 0x8017f3f8; // rom:0xb000 allow_duplicated:True +func_ptr_80170024 = 0x8017e1c8; // rom:0x12000 allow_duplicated:True +func_ptr_80170024 = 0x8017e234; // rom:0x19000 allow_duplicated:True +func_ptr_80170024 = 0x8017e934; // rom:0x20000 allow_duplicated:True +func_ptr_80170024 = 0x8017e960; // rom:0x27000 allow_duplicated:True +func_ptr_80170024 = 0x8017e980; // rom:0x2e000 allow_duplicated:True +func_ptr_80170024 = 0x8017e8e0; // rom:0x35000 allow_duplicated:True +func_ptr_80170024 = 0x8017ef40; // rom:0x3c000 allow_duplicated:True +func_ptr_80170024 = 0x8017f0b8; // rom:0x43000 allow_duplicated:True +func_ptr_80170024 = 0x8017f2e0; // rom:0x4a000 allow_duplicated:True +func_ptr_80170024 = 0x8017f0b4; // rom:0x51000 allow_duplicated:True +func_ptr_80170024 = 0x8017eaf0; // rom:0x58000 allow_duplicated:True +func_ptr_80170024 = 0x8017ebd8; // rom:0x5f000 allow_duplicated:True +func_ptr_80170024 = 0x8017e54c; // rom:0x66000 allow_duplicated:True +func_ptr_80170024 = 0x8017ef90; // rom:0x6d000 allow_duplicated:True +func_ptr_80170024 = 0x8017ed3c; // rom:0x74000 allow_duplicated:True +func_ptr_80170024 = 0x8017e0bc; // rom:0x7b000 allow_duplicated:True +func_ptr_80170024 = 0x8017e17c; // rom:0x82000 allow_duplicated:True +func_ptr_80170024 = 0x8017dd7c; // rom:0x89000 allow_duplicated:True +func_ptr_80170024 = 0x8017f200; // rom:0x90000 allow_duplicated:True +func_ptr_80170024 = 0x8017eb40; // rom:0x97000 allow_duplicated:True +func_ptr_80170024 = 0x8017df48; // rom:0x9e000 allow_duplicated:True +func_ptr_80170024 = 0x8017f274; // rom:0xa5000 allow_duplicated:True +func_ptr_80170024 = 0x8017f5d4; // rom:0xac000 allow_duplicated:True +func_ptr_80170024 = 0x8017f20c; // rom:0xb3000 allow_duplicated:True +func_ptr_80170024 = 0x8017f41c; // rom:0xba000 allow_duplicated:True +func_ptr_80170024 = 0x8017ebbc; // rom:0xc1000 allow_duplicated:True +func_ptr_80170024 = 0x8017f318; // rom:0xc8000 allow_duplicated:True +func_ptr_80170024 = 0x8017ee78; // rom:0xcf000 allow_duplicated:True +func_ptr_80170024 = 0x8017fc0c; // rom:0xd6000 allow_duplicated:True +func_ptr_80170024 = 0x8017df50; // rom:0xdd000 allow_duplicated:True +func_ptr_80170024 = 0x8017dfe8; // rom:0xe4000 allow_duplicated:True +func_ptr_80170024 = 0x8017e290; // rom:0xeb000 allow_duplicated:True +func_ptr_80170024 = 0x8017e3b8; // rom:0xf2000 allow_duplicated:True +func_ptr_80170024 = 0x8017db40; // rom:0xf9000 allow_duplicated:True +func_ptr_80170024 = 0x8017db50; // rom:0x100000 allow_duplicated:True +func_ptr_80170024 = 0x8017ebac; // rom:0x107000 allow_duplicated:True +func_ptr_80170024 = 0x8017e80c; // rom:0x10e000 allow_duplicated:True +func_ptr_80170024 = 0x8017e9f0; // rom:0x115000 allow_duplicated:True +func_ptr_80170024 = 0x8017e508; // rom:0x11c000 allow_duplicated:True +func_ptr_80170024 = 0x8017e1c8; // rom:0x123000 allow_duplicated:True +func_ptr_80170024 = 0x8017e5b4; // rom:0x12a000 allow_duplicated:True +func_ptr_80170024 = 0x8017ed3c; // rom:0x131000 allow_duplicated:True +func_ptr_80170024 = 0x8017deec; // rom:0x138000 allow_duplicated:True +func_ptr_80170024 = 0x8017e380; // rom:0x13f000 allow_duplicated:True +func_ptr_80170024 = 0x8017ee88; // rom:0x146000 allow_duplicated:True +func_ptr_80170024 = 0x8017e66c; // rom:0x14d000 allow_duplicated:True +func_ptr_80170024 = 0x8017f37c; // rom:0x154000 allow_duplicated:True +func_ptr_80170024 = 0x8017f894; // rom:0x15b000 allow_duplicated:True +func_ptr_80170024 = 0x8017fbc0; // rom:0x162000 allow_duplicated:True +func_ptr_80170024 = 0x8017f0a8; // rom:0x169000 allow_duplicated:True +func_ptr_80170024 = 0x8017fb4c; // rom:0x170000 allow_duplicated:True +func_ptr_80170024 = 0x8017f85c; // rom:0x177000 allow_duplicated:True +func_ptr_80170024 = 0x8017e8c0; // rom:0x17e000 allow_duplicated:True +func_ptr_80170024 = 0x8017ebf4; // rom:0x185000 allow_duplicated:True +func_ptr_80170024 = 0x8017f080; // rom:0x18c000 allow_duplicated:True +func_ptr_80170024 = 0x8017e6a8; // rom:0x193000 allow_duplicated:True +func_ptr_80170024 = 0x8017eb08; // rom:0x19a000 allow_duplicated:True +func_ptr_80170028 = 0x8017e6d0; // rom:0x4000 allow_duplicated:True +func_ptr_80170028 = 0x8017f400; // rom:0xb000 allow_duplicated:True +func_ptr_80170028 = 0x8017e1d0; // rom:0x12000 allow_duplicated:True +func_ptr_80170028 = 0x8017e23c; // rom:0x19000 allow_duplicated:True +func_ptr_80170028 = 0x8017e93c; // rom:0x20000 allow_duplicated:True +func_ptr_80170028 = 0x8017e968; // rom:0x27000 allow_duplicated:True +func_ptr_80170028 = 0x8017e988; // rom:0x2e000 allow_duplicated:True +func_ptr_80170028 = 0x8017e8e8; // rom:0x35000 allow_duplicated:True +func_ptr_80170028 = 0x8017ef48; // rom:0x3c000 allow_duplicated:True +func_ptr_80170028 = 0x8017f0c0; // rom:0x43000 allow_duplicated:True +func_ptr_80170028 = 0x8017fbec; // rom:0x4a000 allow_duplicated:True +func_ptr_80170028 = 0x8017f7e0; // rom:0x51000 allow_duplicated:True +func_ptr_80170028 = 0x8017eaf8; // rom:0x58000 allow_duplicated:True +func_ptr_80170028 = 0x8017ebe0; // rom:0x5f000 allow_duplicated:True +func_ptr_80170028 = 0x8017e554; // rom:0x66000 allow_duplicated:True +func_ptr_80170028 = 0x8017ef98; // rom:0x6d000 allow_duplicated:True +func_ptr_80170028 = 0x8017ed44; // rom:0x74000 allow_duplicated:True +func_ptr_80170028 = 0x8017e0c4; // rom:0x7b000 allow_duplicated:True +func_ptr_80170028 = 0x8017e184; // rom:0x82000 allow_duplicated:True +func_ptr_80170028 = 0x8017dd84; // rom:0x89000 allow_duplicated:True +func_ptr_80170028 = 0x8017f208; // rom:0x90000 allow_duplicated:True +func_ptr_80170028 = 0x8017eb48; // rom:0x97000 allow_duplicated:True +func_ptr_80170028 = 0x8017df50; // rom:0x9e000 allow_duplicated:True +func_ptr_80170028 = 0x8017f750; // rom:0xa5000 allow_duplicated:True +func_ptr_80170028 = 0x8017fbc4; // rom:0xac000 allow_duplicated:True +func_ptr_80170028 = 0x8017f8e8; // rom:0xb3000 allow_duplicated:True +func_ptr_80170028 = 0x8017fc0c; // rom:0xba000 allow_duplicated:True +func_ptr_80170028 = 0x8017f5cc; // rom:0xc1000 allow_duplicated:True +func_ptr_80170028 = 0x8017f924; // rom:0xc8000 allow_duplicated:True +func_ptr_80170028 = 0x8017f8c4; // rom:0xcf000 allow_duplicated:True +func_ptr_80170028 = 0x8017fc14; // rom:0xd6000 allow_duplicated:True +func_ptr_80170028 = 0x8017df58; // rom:0xdd000 allow_duplicated:True +func_ptr_80170028 = 0x8017dff0; // rom:0xe4000 allow_duplicated:True +func_ptr_80170028 = 0x8017e298; // rom:0xeb000 allow_duplicated:True +func_ptr_80170028 = 0x8017e3c0; // rom:0xf2000 allow_duplicated:True +func_ptr_80170028 = 0x8017db48; // rom:0xf9000 allow_duplicated:True +func_ptr_80170028 = 0x8017db58; // rom:0x100000 allow_duplicated:True +func_ptr_80170028 = 0x8017ebb4; // rom:0x107000 allow_duplicated:True +func_ptr_80170028 = 0x8017e814; // rom:0x10e000 allow_duplicated:True +func_ptr_80170028 = 0x8017e9f8; // rom:0x115000 allow_duplicated:True +func_ptr_80170028 = 0x8017e510; // rom:0x11c000 allow_duplicated:True +func_ptr_80170028 = 0x8017e1d0; // rom:0x123000 allow_duplicated:True +func_ptr_80170028 = 0x8017e5bc; // rom:0x12a000 allow_duplicated:True +func_ptr_80170028 = 0x8017ed44; // rom:0x131000 allow_duplicated:True +func_ptr_80170028 = 0x8017def4; // rom:0x138000 allow_duplicated:True +func_ptr_80170028 = 0x8017e388; // rom:0x13f000 allow_duplicated:True +func_ptr_80170028 = 0x8017ee90; // rom:0x146000 allow_duplicated:True +func_ptr_80170028 = 0x8017e674; // rom:0x14d000 allow_duplicated:True +func_ptr_80170028 = 0x8017f384; // rom:0x154000 allow_duplicated:True +func_ptr_80170028 = 0x8017f89c; // rom:0x15b000 allow_duplicated:True +func_ptr_80170028 = 0x8017fbc8; // rom:0x162000 allow_duplicated:True +func_ptr_80170028 = 0x8017f0b0; // rom:0x169000 allow_duplicated:True +func_ptr_80170028 = 0x8017fb54; // rom:0x170000 allow_duplicated:True +func_ptr_80170028 = 0x8017f864; // rom:0x177000 allow_duplicated:True +func_ptr_80170028 = 0x8017e8c8; // rom:0x17e000 allow_duplicated:True +func_ptr_80170028 = 0x8017ebfc; // rom:0x185000 allow_duplicated:True +func_ptr_80170028 = 0x8017f088; // rom:0x18c000 allow_duplicated:True +func_ptr_80170028 = 0x8017e6b0; // rom:0x193000 allow_duplicated:True +func_ptr_80170028 = 0x8017eb10; // rom:0x19a000 allow_duplicated:True +WeaponUnused2C = 0x8017e6d8; // rom:0x4000 allow_duplicated:True +WeaponUnused2C = 0x8017f408; // rom:0xb000 allow_duplicated:True +WeaponUnused2C = 0x8017e1d8; // rom:0x12000 allow_duplicated:True +WeaponUnused2C = 0x8017e244; // rom:0x19000 allow_duplicated:True +WeaponUnused2C = 0x8017e944; // rom:0x20000 allow_duplicated:True +WeaponUnused2C = 0x8017e970; // rom:0x27000 allow_duplicated:True +WeaponUnused2C = 0x8017e990; // rom:0x2e000 allow_duplicated:True +WeaponUnused2C = 0x8017e8f0; // rom:0x35000 allow_duplicated:True +WeaponUnused2C = 0x8017ef50; // rom:0x3c000 allow_duplicated:True +WeaponUnused2C = 0x8017f0c8; // rom:0x43000 allow_duplicated:True +WeaponUnused2C = 0x8017fbf4; // rom:0x4a000 allow_duplicated:True +WeaponUnused2C = 0x8017f7e8; // rom:0x51000 allow_duplicated:True +WeaponUnused2C = 0x8017eb00; // rom:0x58000 allow_duplicated:True +WeaponUnused2C = 0x8017ebe8; // rom:0x5f000 allow_duplicated:True +WeaponUnused2C = 0x8017e55c; // rom:0x66000 allow_duplicated:True +WeaponUnused2C = 0x8017efa0; // rom:0x6d000 allow_duplicated:True +WeaponUnused2C = 0x8017ed4c; // rom:0x74000 allow_duplicated:True +WeaponUnused2C = 0x8017e0cc; // rom:0x7b000 allow_duplicated:True +WeaponUnused2C = 0x8017e18c; // rom:0x82000 allow_duplicated:True +WeaponUnused2C = 0x8017dd8c; // rom:0x89000 allow_duplicated:True +WeaponUnused2C = 0x8017f210; // rom:0x90000 allow_duplicated:True +WeaponUnused2C = 0x8017eb50; // rom:0x97000 allow_duplicated:True +WeaponUnused2C = 0x8017df58; // rom:0x9e000 allow_duplicated:True +WeaponUnused2C = 0x8017f954; // rom:0xa5000 allow_duplicated:True +WeaponUnused2C = 0x8017fbcc; // rom:0xac000 allow_duplicated:True +WeaponUnused2C = 0x8017f8f0; // rom:0xb3000 allow_duplicated:True +WeaponUnused2C = 0x8017fc14; // rom:0xba000 allow_duplicated:True +WeaponUnused2C = 0x8017f6c4; // rom:0xc1000 allow_duplicated:True +WeaponUnused2C = 0x8017f92c; // rom:0xc8000 allow_duplicated:True +WeaponUnused2C = 0x8017f978; // rom:0xcf000 allow_duplicated:True +WeaponUnused2C = 0x8017fc1c; // rom:0xd6000 allow_duplicated:True +WeaponUnused2C = 0x8017df60; // rom:0xdd000 allow_duplicated:True +WeaponUnused2C = 0x8017dff8; // rom:0xe4000 allow_duplicated:True +WeaponUnused2C = 0x8017e2a0; // rom:0xeb000 allow_duplicated:True +WeaponUnused2C = 0x8017e3c8; // rom:0xf2000 allow_duplicated:True +WeaponUnused2C = 0x8017db50; // rom:0xf9000 allow_duplicated:True +WeaponUnused2C = 0x8017db60; // rom:0x100000 allow_duplicated:True +WeaponUnused2C = 0x8017ebbc; // rom:0x107000 allow_duplicated:True +WeaponUnused2C = 0x8017e81c; // rom:0x10e000 allow_duplicated:True +WeaponUnused2C = 0x8017ea00; // rom:0x115000 allow_duplicated:True +WeaponUnused2C = 0x8017e518; // rom:0x11c000 allow_duplicated:True +WeaponUnused2C = 0x8017e1d8; // rom:0x123000 allow_duplicated:True +WeaponUnused2C = 0x8017e5c4; // rom:0x12a000 allow_duplicated:True +WeaponUnused2C = 0x8017ed4c; // rom:0x131000 allow_duplicated:True +WeaponUnused2C = 0x8017defc; // rom:0x138000 allow_duplicated:True +WeaponUnused2C = 0x8017e390; // rom:0x13f000 allow_duplicated:True +WeaponUnused2C = 0x8017ee98; // rom:0x146000 allow_duplicated:True +WeaponUnused2C = 0x8017e67c; // rom:0x14d000 allow_duplicated:True +WeaponUnused2C = 0x8017f38c; // rom:0x154000 allow_duplicated:True +WeaponUnused2C = 0x8017f8a4; // rom:0x15b000 allow_duplicated:True +WeaponUnused2C = 0x8017fbd0; // rom:0x162000 allow_duplicated:True +WeaponUnused2C = 0x8017f0b8; // rom:0x169000 allow_duplicated:True +WeaponUnused2C = 0x8017fb5c; // rom:0x170000 allow_duplicated:True +WeaponUnused2C = 0x8017f86c; // rom:0x177000 allow_duplicated:True +WeaponUnused2C = 0x8017e8d0; // rom:0x17e000 allow_duplicated:True +WeaponUnused2C = 0x8017ec04; // rom:0x185000 allow_duplicated:True +WeaponUnused2C = 0x8017f090; // rom:0x18c000 allow_duplicated:True +WeaponUnused2C = 0x8017e6b8; // rom:0x193000 allow_duplicated:True +WeaponUnused2C = 0x8017eb18; // rom:0x19a000 allow_duplicated:True +WeaponUnused30 = 0x8017e6e0; // rom:0x4000 allow_duplicated:True +WeaponUnused30 = 0x8017f410; // rom:0xb000 allow_duplicated:True +WeaponUnused30 = 0x8017e1e0; // rom:0x12000 allow_duplicated:True +WeaponUnused30 = 0x8017e24c; // rom:0x19000 allow_duplicated:True +WeaponUnused30 = 0x8017e94c; // rom:0x20000 allow_duplicated:True +WeaponUnused30 = 0x8017e978; // rom:0x27000 allow_duplicated:True +WeaponUnused30 = 0x8017e998; // rom:0x2e000 allow_duplicated:True +WeaponUnused30 = 0x8017e8f8; // rom:0x35000 allow_duplicated:True +WeaponUnused30 = 0x8017ef58; // rom:0x3c000 allow_duplicated:True +WeaponUnused30 = 0x8017f0d0; // rom:0x43000 allow_duplicated:True +WeaponUnused30 = 0x8017fbfc; // rom:0x4a000 allow_duplicated:True +WeaponUnused30 = 0x8017f7f0; // rom:0x51000 allow_duplicated:True +WeaponUnused30 = 0x8017eb08; // rom:0x58000 allow_duplicated:True +WeaponUnused30 = 0x8017ebf0; // rom:0x5f000 allow_duplicated:True +WeaponUnused30 = 0x8017e564; // rom:0x66000 allow_duplicated:True +WeaponUnused30 = 0x8017efa8; // rom:0x6d000 allow_duplicated:True +WeaponUnused30 = 0x8017ed54; // rom:0x74000 allow_duplicated:True +WeaponUnused30 = 0x8017e0d4; // rom:0x7b000 allow_duplicated:True +WeaponUnused30 = 0x8017e194; // rom:0x82000 allow_duplicated:True +WeaponUnused30 = 0x8017dd94; // rom:0x89000 allow_duplicated:True +WeaponUnused30 = 0x8017f218; // rom:0x90000 allow_duplicated:True +WeaponUnused30 = 0x8017eb58; // rom:0x97000 allow_duplicated:True +WeaponUnused30 = 0x8017df60; // rom:0x9e000 allow_duplicated:True +WeaponUnused30 = 0x8017f95c; // rom:0xa5000 allow_duplicated:True +WeaponUnused30 = 0x8017fbd4; // rom:0xac000 allow_duplicated:True +WeaponUnused30 = 0x8017f8f8; // rom:0xb3000 allow_duplicated:True +WeaponUnused30 = 0x8017fc1c; // rom:0xba000 allow_duplicated:True +WeaponUnused30 = 0x8017f6cc; // rom:0xc1000 allow_duplicated:True +WeaponUnused30 = 0x8017f934; // rom:0xc8000 allow_duplicated:True +WeaponUnused30 = 0x8017f980; // rom:0xcf000 allow_duplicated:True +WeaponUnused30 = 0x8017fc24; // rom:0xd6000 allow_duplicated:True +WeaponUnused30 = 0x8017df68; // rom:0xdd000 allow_duplicated:True +WeaponUnused30 = 0x8017e000; // rom:0xe4000 allow_duplicated:True +WeaponUnused30 = 0x8017e2a8; // rom:0xeb000 allow_duplicated:True +WeaponUnused30 = 0x8017e3d0; // rom:0xf2000 allow_duplicated:True +WeaponUnused30 = 0x8017db58; // rom:0xf9000 allow_duplicated:True +WeaponUnused30 = 0x8017db68; // rom:0x100000 allow_duplicated:True +WeaponUnused30 = 0x8017ebc4; // rom:0x107000 allow_duplicated:True +WeaponUnused30 = 0x8017e824; // rom:0x10e000 allow_duplicated:True +WeaponUnused30 = 0x8017ea08; // rom:0x115000 allow_duplicated:True +WeaponUnused30 = 0x8017e520; // rom:0x11c000 allow_duplicated:True +WeaponUnused30 = 0x8017e1e0; // rom:0x123000 allow_duplicated:True +WeaponUnused30 = 0x8017e5cc; // rom:0x12a000 allow_duplicated:True +WeaponUnused30 = 0x8017ed54; // rom:0x131000 allow_duplicated:True +WeaponUnused30 = 0x8017df04; // rom:0x138000 allow_duplicated:True +WeaponUnused30 = 0x8017e398; // rom:0x13f000 allow_duplicated:True +WeaponUnused30 = 0x8017eea0; // rom:0x146000 allow_duplicated:True +WeaponUnused30 = 0x8017e684; // rom:0x14d000 allow_duplicated:True +WeaponUnused30 = 0x8017f394; // rom:0x154000 allow_duplicated:True +WeaponUnused30 = 0x8017f8ac; // rom:0x15b000 allow_duplicated:True +WeaponUnused30 = 0x8017fbd8; // rom:0x162000 allow_duplicated:True +WeaponUnused30 = 0x8017f0c0; // rom:0x169000 allow_duplicated:True +WeaponUnused30 = 0x8017fb64; // rom:0x170000 allow_duplicated:True +WeaponUnused30 = 0x8017f874; // rom:0x177000 allow_duplicated:True +WeaponUnused30 = 0x8017e8d8; // rom:0x17e000 allow_duplicated:True +WeaponUnused30 = 0x8017ec0c; // rom:0x185000 allow_duplicated:True +WeaponUnused30 = 0x8017f098; // rom:0x18c000 allow_duplicated:True +WeaponUnused30 = 0x8017e6c0; // rom:0x193000 allow_duplicated:True +WeaponUnused30 = 0x8017eb20; // rom:0x19a000 allow_duplicated:True +WeaponUnused34 = 0x8017e6e8; // rom:0x4000 allow_duplicated:True +WeaponUnused34 = 0x8017f418; // rom:0xb000 allow_duplicated:True +WeaponUnused34 = 0x8017e1e8; // rom:0x12000 allow_duplicated:True +WeaponUnused34 = 0x8017e254; // rom:0x19000 allow_duplicated:True +WeaponUnused34 = 0x8017e954; // rom:0x20000 allow_duplicated:True +WeaponUnused34 = 0x8017e980; // rom:0x27000 allow_duplicated:True +WeaponUnused34 = 0x8017e9a0; // rom:0x2e000 allow_duplicated:True +WeaponUnused34 = 0x8017e900; // rom:0x35000 allow_duplicated:True +WeaponUnused34 = 0x8017ef60; // rom:0x3c000 allow_duplicated:True +WeaponUnused34 = 0x8017f0d8; // rom:0x43000 allow_duplicated:True +WeaponUnused34 = 0x8017fc04; // rom:0x4a000 allow_duplicated:True +WeaponUnused34 = 0x8017f7f8; // rom:0x51000 allow_duplicated:True +WeaponUnused34 = 0x8017eb10; // rom:0x58000 allow_duplicated:True +WeaponUnused34 = 0x8017ebf8; // rom:0x5f000 allow_duplicated:True +WeaponUnused34 = 0x8017e56c; // rom:0x66000 allow_duplicated:True +WeaponUnused34 = 0x8017efb0; // rom:0x6d000 allow_duplicated:True +WeaponUnused34 = 0x8017ed5c; // rom:0x74000 allow_duplicated:True +WeaponUnused34 = 0x8017e0dc; // rom:0x7b000 allow_duplicated:True +WeaponUnused34 = 0x8017e19c; // rom:0x82000 allow_duplicated:True +WeaponUnused34 = 0x8017dd9c; // rom:0x89000 allow_duplicated:True +WeaponUnused34 = 0x8017f220; // rom:0x90000 allow_duplicated:True +WeaponUnused34 = 0x8017eb60; // rom:0x97000 allow_duplicated:True +WeaponUnused34 = 0x8017df68; // rom:0x9e000 allow_duplicated:True +WeaponUnused34 = 0x8017f964; // rom:0xa5000 allow_duplicated:True +WeaponUnused34 = 0x8017fbdc; // rom:0xac000 allow_duplicated:True +WeaponUnused34 = 0x8017f900; // rom:0xb3000 allow_duplicated:True +WeaponUnused34 = 0x8017fc24; // rom:0xba000 allow_duplicated:True +WeaponUnused34 = 0x8017f6d4; // rom:0xc1000 allow_duplicated:True +WeaponUnused34 = 0x8017f93c; // rom:0xc8000 allow_duplicated:True +WeaponUnused34 = 0x8017f988; // rom:0xcf000 allow_duplicated:True +WeaponUnused34 = 0x8017fc2c; // rom:0xd6000 allow_duplicated:True +WeaponUnused34 = 0x8017df70; // rom:0xdd000 allow_duplicated:True +WeaponUnused34 = 0x8017e008; // rom:0xe4000 allow_duplicated:True +WeaponUnused34 = 0x8017e2b0; // rom:0xeb000 allow_duplicated:True +WeaponUnused34 = 0x8017e3d8; // rom:0xf2000 allow_duplicated:True +WeaponUnused34 = 0x8017db60; // rom:0xf9000 allow_duplicated:True +WeaponUnused34 = 0x8017db70; // rom:0x100000 allow_duplicated:True +WeaponUnused34 = 0x8017ebcc; // rom:0x107000 allow_duplicated:True +WeaponUnused34 = 0x8017e82c; // rom:0x10e000 allow_duplicated:True +WeaponUnused34 = 0x8017ea10; // rom:0x115000 allow_duplicated:True +WeaponUnused34 = 0x8017e528; // rom:0x11c000 allow_duplicated:True +WeaponUnused34 = 0x8017e1e8; // rom:0x123000 allow_duplicated:True +WeaponUnused34 = 0x8017e5d4; // rom:0x12a000 allow_duplicated:True +WeaponUnused34 = 0x8017ed5c; // rom:0x131000 allow_duplicated:True +WeaponUnused34 = 0x8017df0c; // rom:0x138000 allow_duplicated:True +WeaponUnused34 = 0x8017e3a0; // rom:0x13f000 allow_duplicated:True +WeaponUnused34 = 0x8017eea8; // rom:0x146000 allow_duplicated:True +WeaponUnused34 = 0x8017e68c; // rom:0x14d000 allow_duplicated:True +WeaponUnused34 = 0x8017f39c; // rom:0x154000 allow_duplicated:True +WeaponUnused34 = 0x8017f8b4; // rom:0x15b000 allow_duplicated:True +WeaponUnused34 = 0x8017fbe0; // rom:0x162000 allow_duplicated:True +WeaponUnused34 = 0x8017f0c8; // rom:0x169000 allow_duplicated:True +WeaponUnused34 = 0x8017fb6c; // rom:0x170000 allow_duplicated:True +WeaponUnused34 = 0x8017f87c; // rom:0x177000 allow_duplicated:True +WeaponUnused34 = 0x8017e8e0; // rom:0x17e000 allow_duplicated:True +WeaponUnused34 = 0x8017ec14; // rom:0x185000 allow_duplicated:True +WeaponUnused34 = 0x8017f0a0; // rom:0x18c000 allow_duplicated:True +WeaponUnused34 = 0x8017e6c8; // rom:0x193000 allow_duplicated:True +WeaponUnused34 = 0x8017eb28; // rom:0x19a000 allow_duplicated:True +WeaponUnused38 = 0x8017e6f0; // rom:0x4000 allow_duplicated:True +WeaponUnused38 = 0x8017f420; // rom:0xb000 allow_duplicated:True +WeaponUnused38 = 0x8017e1f0; // rom:0x12000 allow_duplicated:True +WeaponUnused38 = 0x8017e25c; // rom:0x19000 allow_duplicated:True +WeaponUnused38 = 0x8017e95c; // rom:0x20000 allow_duplicated:True +WeaponUnused38 = 0x8017e988; // rom:0x27000 allow_duplicated:True +WeaponUnused38 = 0x8017e9a8; // rom:0x2e000 allow_duplicated:True +WeaponUnused38 = 0x8017e908; // rom:0x35000 allow_duplicated:True +WeaponUnused38 = 0x8017ef68; // rom:0x3c000 allow_duplicated:True +WeaponUnused38 = 0x8017f0e0; // rom:0x43000 allow_duplicated:True +WeaponUnused38 = 0x8017fc0c; // rom:0x4a000 allow_duplicated:True +WeaponUnused38 = 0x8017f800; // rom:0x51000 allow_duplicated:True +WeaponUnused38 = 0x8017eb18; // rom:0x58000 allow_duplicated:True +WeaponUnused38 = 0x8017ec00; // rom:0x5f000 allow_duplicated:True +WeaponUnused38 = 0x8017e574; // rom:0x66000 allow_duplicated:True +WeaponUnused38 = 0x8017efb8; // rom:0x6d000 allow_duplicated:True +WeaponUnused38 = 0x8017ed64; // rom:0x74000 allow_duplicated:True +WeaponUnused38 = 0x8017e0e4; // rom:0x7b000 allow_duplicated:True +WeaponUnused38 = 0x8017e1a4; // rom:0x82000 allow_duplicated:True +WeaponUnused38 = 0x8017dda4; // rom:0x89000 allow_duplicated:True +WeaponUnused38 = 0x8017f228; // rom:0x90000 allow_duplicated:True +WeaponUnused38 = 0x8017eb68; // rom:0x97000 allow_duplicated:True +WeaponUnused38 = 0x8017df70; // rom:0x9e000 allow_duplicated:True +WeaponUnused38 = 0x8017f96c; // rom:0xa5000 allow_duplicated:True +WeaponUnused38 = 0x8017fbe4; // rom:0xac000 allow_duplicated:True +WeaponUnused38 = 0x8017f908; // rom:0xb3000 allow_duplicated:True +WeaponUnused38 = 0x8017fc2c; // rom:0xba000 allow_duplicated:True +WeaponUnused38 = 0x8017f6dc; // rom:0xc1000 allow_duplicated:True +WeaponUnused38 = 0x8017f944; // rom:0xc8000 allow_duplicated:True +WeaponUnused38 = 0x8017f990; // rom:0xcf000 allow_duplicated:True +WeaponUnused38 = 0x8017fc34; // rom:0xd6000 allow_duplicated:True +WeaponUnused38 = 0x8017df78; // rom:0xdd000 allow_duplicated:True +WeaponUnused38 = 0x8017e010; // rom:0xe4000 allow_duplicated:True +WeaponUnused38 = 0x8017e2b8; // rom:0xeb000 allow_duplicated:True +WeaponUnused38 = 0x8017e3e0; // rom:0xf2000 allow_duplicated:True +WeaponUnused38 = 0x8017db68; // rom:0xf9000 allow_duplicated:True +WeaponUnused38 = 0x8017db78; // rom:0x100000 allow_duplicated:True +WeaponUnused38 = 0x8017ebd4; // rom:0x107000 allow_duplicated:True +WeaponUnused38 = 0x8017e834; // rom:0x10e000 allow_duplicated:True +WeaponUnused38 = 0x8017ea18; // rom:0x115000 allow_duplicated:True +WeaponUnused38 = 0x8017e530; // rom:0x11c000 allow_duplicated:True +WeaponUnused38 = 0x8017e1f0; // rom:0x123000 allow_duplicated:True +WeaponUnused38 = 0x8017e5dc; // rom:0x12a000 allow_duplicated:True +WeaponUnused38 = 0x8017ed64; // rom:0x131000 allow_duplicated:True +WeaponUnused38 = 0x8017df14; // rom:0x138000 allow_duplicated:True +WeaponUnused38 = 0x8017e3a8; // rom:0x13f000 allow_duplicated:True +WeaponUnused38 = 0x8017eeb0; // rom:0x146000 allow_duplicated:True +WeaponUnused38 = 0x8017e694; // rom:0x14d000 allow_duplicated:True +WeaponUnused38 = 0x8017f3a4; // rom:0x154000 allow_duplicated:True +WeaponUnused38 = 0x8017f8bc; // rom:0x15b000 allow_duplicated:True +WeaponUnused38 = 0x8017fbe8; // rom:0x162000 allow_duplicated:True +WeaponUnused38 = 0x8017f0d0; // rom:0x169000 allow_duplicated:True +WeaponUnused38 = 0x8017fb74; // rom:0x170000 allow_duplicated:True +WeaponUnused38 = 0x8017f884; // rom:0x177000 allow_duplicated:True +WeaponUnused38 = 0x8017e8e8; // rom:0x17e000 allow_duplicated:True +WeaponUnused38 = 0x8017ec1c; // rom:0x185000 allow_duplicated:True +WeaponUnused38 = 0x8017f0a8; // rom:0x18c000 allow_duplicated:True +WeaponUnused38 = 0x8017e6d0; // rom:0x193000 allow_duplicated:True +WeaponUnused38 = 0x8017eb30; // rom:0x19a000 allow_duplicated:True +WeaponUnused3C = 0x8017e6f8; // rom:0x4000 allow_duplicated:True +WeaponUnused3C = 0x8017f428; // rom:0xb000 allow_duplicated:True +WeaponUnused3C = 0x8017e1f8; // rom:0x12000 allow_duplicated:True +WeaponUnused3C = 0x8017e264; // rom:0x19000 allow_duplicated:True +WeaponUnused3C = 0x8017e964; // rom:0x20000 allow_duplicated:True +WeaponUnused3C = 0x8017e990; // rom:0x27000 allow_duplicated:True +WeaponUnused3C = 0x8017e9b0; // rom:0x2e000 allow_duplicated:True +WeaponUnused3C = 0x8017e910; // rom:0x35000 allow_duplicated:True +WeaponUnused3C = 0x8017ef70; // rom:0x3c000 allow_duplicated:True +WeaponUnused3C = 0x8017f0e8; // rom:0x43000 allow_duplicated:True +WeaponUnused3C = 0x8017fc14; // rom:0x4a000 allow_duplicated:True +WeaponUnused3C = 0x8017f808; // rom:0x51000 allow_duplicated:True +WeaponUnused3C = 0x8017eb20; // rom:0x58000 allow_duplicated:True +WeaponUnused3C = 0x8017ec08; // rom:0x5f000 allow_duplicated:True +WeaponUnused3C = 0x8017e57c; // rom:0x66000 allow_duplicated:True +WeaponUnused3C = 0x8017efc0; // rom:0x6d000 allow_duplicated:True +WeaponUnused3C = 0x8017ed6c; // rom:0x74000 allow_duplicated:True +WeaponUnused3C = 0x8017e0ec; // rom:0x7b000 allow_duplicated:True +WeaponUnused3C = 0x8017e1ac; // rom:0x82000 allow_duplicated:True +WeaponUnused3C = 0x8017ddac; // rom:0x89000 allow_duplicated:True +WeaponUnused3C = 0x8017f230; // rom:0x90000 allow_duplicated:True +WeaponUnused3C = 0x8017eb70; // rom:0x97000 allow_duplicated:True +WeaponUnused3C = 0x8017df78; // rom:0x9e000 allow_duplicated:True +WeaponUnused3C = 0x8017f974; // rom:0xa5000 allow_duplicated:True +WeaponUnused3C = 0x8017fbec; // rom:0xac000 allow_duplicated:True +WeaponUnused3C = 0x8017f910; // rom:0xb3000 allow_duplicated:True +WeaponUnused3C = 0x8017fc34; // rom:0xba000 allow_duplicated:True +WeaponUnused3C = 0x8017f6e4; // rom:0xc1000 allow_duplicated:True +WeaponUnused3C = 0x8017f94c; // rom:0xc8000 allow_duplicated:True +WeaponUnused3C = 0x8017f998; // rom:0xcf000 allow_duplicated:True +WeaponUnused3C = 0x8017fc3c; // rom:0xd6000 allow_duplicated:True +WeaponUnused3C = 0x8017df80; // rom:0xdd000 allow_duplicated:True +WeaponUnused3C = 0x8017e018; // rom:0xe4000 allow_duplicated:True +WeaponUnused3C = 0x8017e2c0; // rom:0xeb000 allow_duplicated:True +WeaponUnused3C = 0x8017e3e8; // rom:0xf2000 allow_duplicated:True +WeaponUnused3C = 0x8017db70; // rom:0xf9000 allow_duplicated:True +WeaponUnused3C = 0x8017db80; // rom:0x100000 allow_duplicated:True +WeaponUnused3C = 0x8017ebdc; // rom:0x107000 allow_duplicated:True +WeaponUnused3C = 0x8017e83c; // rom:0x10e000 allow_duplicated:True +WeaponUnused3C = 0x8017ea20; // rom:0x115000 allow_duplicated:True +WeaponUnused3C = 0x8017e538; // rom:0x11c000 allow_duplicated:True +WeaponUnused3C = 0x8017e1f8; // rom:0x123000 allow_duplicated:True +WeaponUnused3C = 0x8017e5e4; // rom:0x12a000 allow_duplicated:True +WeaponUnused3C = 0x8017ed6c; // rom:0x131000 allow_duplicated:True +WeaponUnused3C = 0x8017df1c; // rom:0x138000 allow_duplicated:True +WeaponUnused3C = 0x8017e3b0; // rom:0x13f000 allow_duplicated:True +WeaponUnused3C = 0x8017eeb8; // rom:0x146000 allow_duplicated:True +WeaponUnused3C = 0x8017e69c; // rom:0x14d000 allow_duplicated:True +WeaponUnused3C = 0x8017f3ac; // rom:0x154000 allow_duplicated:True +WeaponUnused3C = 0x8017f8c4; // rom:0x15b000 allow_duplicated:True +WeaponUnused3C = 0x8017fbf0; // rom:0x162000 allow_duplicated:True +WeaponUnused3C = 0x8017f0d8; // rom:0x169000 allow_duplicated:True +WeaponUnused3C = 0x8017fb7c; // rom:0x170000 allow_duplicated:True +WeaponUnused3C = 0x8017f88c; // rom:0x177000 allow_duplicated:True +WeaponUnused3C = 0x8017e8f0; // rom:0x17e000 allow_duplicated:True +WeaponUnused3C = 0x8017ec24; // rom:0x185000 allow_duplicated:True +WeaponUnused3C = 0x8017f0b0; // rom:0x18c000 allow_duplicated:True +WeaponUnused3C = 0x8017e6d8; // rom:0x193000 allow_duplicated:True +WeaponUnused3C = 0x8017eb38; // rom:0x19a000 allow_duplicated:True + +DestroyEntity = 0x8017E014; // rom:0xb000 allow_duplicated:True +DestroyEntity = 0x8017DBDC; // rom:0x12000 allow_duplicated:True +DestroyEntity = 0x8017DC40; // rom:0x19000 allow_duplicated:True +DestroyEntity = 0x8017E31C; // rom:0x20000 allow_duplicated:True +DestroyEntity = 0x8017E31C; // rom:0x27000 allow_duplicated:True +DestroyEntity = 0x8017DC54; // rom:0x2e000 allow_duplicated:True +DestroyEntity = 0x8017DCA0; // rom:0x35000 allow_duplicated:True +DestroyEntity = 0x8017DB4C; // rom:0x3c000 allow_duplicated:True +DestroyEntity = 0x8017DB4C; // rom:0x43000 allow_duplicated:True +DestroyEntity = 0x8017DCC0; // rom:0x4a000 allow_duplicated:True +DestroyEntity = 0x8017DCDC; // rom:0x51000 allow_duplicated:True +DestroyEntity = 0x8017DACC; // rom:0x58000 allow_duplicated:True +DestroyEntity = 0x8017D62C; // rom:0x5f000 allow_duplicated:True +DestroyEntity = 0x8017D5BC; // rom:0x66000 allow_duplicated:True +DestroyEntity = 0x8017D7E4; // rom:0x6d000 allow_duplicated:True +DestroyEntity = 0x8017D60C; // rom:0x74000 allow_duplicated:True +DestroyEntity = 0x8017D740; // rom:0x82000 allow_duplicated:True +DestroyEntity = 0x8017D554; // rom:0x89000 allow_duplicated:True +DestroyEntity = 0x8017DBC8; // rom:0x90000 allow_duplicated:True +DestroyEntity = 0x8017D7B4; // rom:0x97000 allow_duplicated:True +DestroyEntity = 0x8017D814; // rom:0x9e000 allow_duplicated:True +DestroyEntity = 0x8017DD80; // rom:0xa5000 allow_duplicated:True +DestroyEntity = 0x8017DDE0; // rom:0xac000 allow_duplicated:True +DestroyEntity = 0x8017DB74; // rom:0xb3000 allow_duplicated:True +DestroyEntity = 0x8017DB9C; // rom:0xba000 allow_duplicated:True +DestroyEntity = 0x8017DD54; // rom:0xc1000 allow_duplicated:True +DestroyEntity = 0x8017DBF4; // rom:0xc8000 allow_duplicated:True +DestroyEntity = 0x8017DDD8; // rom:0xcf000 allow_duplicated:True +DestroyEntity = 0x8017D6DC; // rom:0xd6000 allow_duplicated:True +DestroyEntity = 0x8017D918; // rom:0xdd000 allow_duplicated:True +DestroyEntity = 0x8017D924; // rom:0xe4000 allow_duplicated:True +DestroyEntity = 0x8017DC58; // rom:0xeb000 allow_duplicated:True +DestroyEntity = 0x8017D950; // rom:0xf2000 allow_duplicated:True +DestroyEntity = 0x8017D54C; // rom:0xf9000 allow_duplicated:True +DestroyEntity = 0x8017D55C; // rom:0x100000 allow_duplicated:True +DestroyEntity = 0x8017D7C4; // rom:0x107000 allow_duplicated:True +DestroyEntity = 0x8017DDEC; // rom:0x10e000 allow_duplicated:True +DestroyEntity = 0x8017DDEC; // rom:0x115000 allow_duplicated:True +DestroyEntity = 0x8017D874; // rom:0x11c000 allow_duplicated:True +DestroyEntity = 0x8017D574; // rom:0x123000 allow_duplicated:True +DestroyEntity = 0x8017D764; // rom:0x12a000 allow_duplicated:True +DestroyEntity = 0x8017E05C; // rom:0x131000 allow_duplicated:True +DestroyEntity = 0x8017D2C0; // rom:0x138000 allow_duplicated:True +DestroyEntity = 0x8017D378; // rom:0x13f000 allow_duplicated:True +DestroyEntity = 0x8017DC64; // rom:0x146000 allow_duplicated:True +DestroyEntity = 0x8017D568; // rom:0x14d000 allow_duplicated:True +DestroyEntity = 0x8017E050; // rom:0x154000 allow_duplicated:True +DestroyEntity = 0x8017E14C; // rom:0x15b000 allow_duplicated:True +DestroyEntity = 0x8017E080; // rom:0x162000 allow_duplicated:True +DestroyEntity = 0x8017DED4; // rom:0x169000 allow_duplicated:True +DestroyEntity = 0x8017DCB0; // rom:0x170000 allow_duplicated:True +DestroyEntity = 0x8017E280; // rom:0x177000 allow_duplicated:True +DestroyEntity = 0x8017DF0C; // rom:0x17e000 allow_duplicated:True +DestroyEntity = 0x8017E1A0; // rom:0x185000 allow_duplicated:True +DestroyEntity = 0x8017E060; // rom:0x18c000 allow_duplicated:True +DestroyEntity = 0x8017E0B4; // rom:0x193000 allow_duplicated:True +DestroyEntity = 0x8017DC50; // rom:0x19a000 allow_duplicated:True diff --git a/config/symexport.pspeu.w0_000.txt b/config/symexport.pspeu.w0_000.txt index 8d15b4d86..b1ce87f53 100644 --- a/config/symexport.pspeu.w0_000.txt +++ b/config/symexport.pspeu.w0_000.txt @@ -1,2 +1,2 @@ EXTERN(_binary_assets_weapon_w0_000_mwo_header_bin_start) -EXTERN(w0_000_Load) +EXTERN(WeaponLoad) diff --git a/config/symexport.pspeu.w1_000.txt b/config/symexport.pspeu.w1_000.txt index 7d9e11062..b227fd94e 100644 --- a/config/symexport.pspeu.w1_000.txt +++ b/config/symexport.pspeu.w1_000.txt @@ -1,2 +1,2 @@ EXTERN(_binary_assets_weapon1_w1_000_mwo_header_bin_start) -EXTERN(w0_000_Load) +EXTERN(WeaponLoad) diff --git a/config/symexport.pspeu.w1_012.txt b/config/symexport.pspeu.w1_012.txt index 21f05e365..49d354730 100644 --- a/config/symexport.pspeu.w1_012.txt +++ b/config/symexport.pspeu.w1_012.txt @@ -1,2 +1,2 @@ EXTERN(_binary_assets_weapon1_w1_012_mwo_header_bin_start) -EXTERN(w1_012_Load) +EXTERN(WeaponLoad) diff --git a/include/weapon.h b/include/weapon.h index 81fd22ded..0a0b218fe 100644 --- a/include/weapon.h +++ b/include/weapon.h @@ -5,6 +5,10 @@ #include #include +// these are macros instead of an enum to support preprocessor expansion. +#define LEFT_HAND 0 +#define RIGHT_HAND 1 + typedef struct { /* 0x00 */ void (*EntityWeaponAttack)(Entity* self); /* 0x04 */ void (*func_ptr_80170004)(Entity* self); diff --git a/src/weapon/hand.h b/src/weapon/hand.h new file mode 100644 index 000000000..22a507566 --- /dev/null +++ b/src/weapon/hand.h @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +#ifndef HAND_H +#define HAND_H +#include "weapon_private.h" + +s32 g_HandId = HAND_ID; +#endif // HAND_H diff --git a/src/weapon/left_hand.c b/src/weapon/left_hand.c new file mode 100644 index 000000000..bbb78f571 --- /dev/null +++ b/src/weapon/left_hand.c @@ -0,0 +1,2 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +#include "hand.h" diff --git a/src/weapon/right_hand.c b/src/weapon/right_hand.c new file mode 100644 index 000000000..bbb78f571 --- /dev/null +++ b/src/weapon/right_hand.c @@ -0,0 +1,2 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +#include "hand.h" diff --git a/src/weapon/shared.h b/src/weapon/shared.h index f56d70922..137a32b16 100644 --- a/src/weapon/shared.h +++ b/src/weapon/shared.h @@ -3,7 +3,7 @@ #include "../destroy_entity.h" -static void LoadWeaponPalette(s32 clutIndex) { +void LoadWeaponPalette(s32 clutIndex) { RECT dstRect; u16* src; u16* dst; diff --git a/src/weapon/w1_012.c b/src/weapon/w1_012.c index 7bb9423ed..500954ed5 100644 --- a/src/weapon/w1_012.c +++ b/src/weapon/w1_012.c @@ -45,4 +45,4 @@ void func_pspeu_092F8440(void) {} void func_pspeu_092F8448(void) {} -INCLUDE_ASM("weapon/w1_012_psp/nonmatchings/w1_012", w1_012_Load); +INCLUDE_ASM("weapon/w1_012_psp/nonmatchings/w1_012", WeaponLoad); diff --git a/src/weapon/w_000.c b/src/weapon/w_000.c index 110aa6d66..4844932fe 100644 --- a/src/weapon/w_000.c +++ b/src/weapon/w_000.c @@ -7,20 +7,6 @@ #include "weapon_private.h" -#ifdef VERSION_PSP -// when HAND_ID is zero, MetroWerks puts this in BSS. this may -// have been in a separate file because it is located at the -// front of .data (when HAND_ID = 1) on PSP/mwcc, but at the end -// of .data (regardless of value) on PSX/gcc. -static s32 g_HandId = HAND_ID; -#endif - -// PSP keeps a separate copy of the generated animsets per hand. -// clang-format off -#define inner_path(hand, n) CPP_STR(PATH_JOIN(gen/w##hand, n)) -// clang-format on -#define path(hand, n) inner_path(hand, n) - #ifdef VERSION_PSP #include path(HAND_ID, w_000_1.h) #include path(HAND_ID, w_000_2.h) @@ -202,13 +188,9 @@ static u16* g_WeaponCluts[] = { (u16*)g_Clut1, (u16*)g_Clut0, (u16*)g_Clut2, (u16*)g_Clut3, (u16*)g_Clut4, }; -#ifndef VERSION_PSP -static s32 g_HandId = HAND_ID; -#endif - #include "shared.h" -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s32 mask; s16 subType; @@ -260,83 +242,30 @@ static void EntityWeaponAttack(Entity* self) { self->rotPivotY = PLAYER.rotPivotY; } -#ifdef VERSION_PSP -static void func_ptr_80170004(void) {} +void func_ptr_80170004(void) {} -static void func_ptr_80170008(void) {} +void func_ptr_80170008(void) {} -static void func_ptr_8017000C(void) {} +void func_ptr_8017000C(void) {} -static void func_ptr_80170010(void) {} +void func_ptr_80170010(void) {} -static void func_ptr_80170014(void) {} -#else -static s32 func_ptr_80170004(Entity* self) {} +void func_ptr_80170014(void) {} -static void func_ptr_80170008(Entity* self) {} +int GetWeaponId(void) { return 0; } -static void func_ptr_8017000C(Entity* self) {} +void EntityWeaponShieldSpell(void) {} -static s32 func_ptr_80170010(Entity* self) {} +void func_ptr_80170024(void) {} -static s32 func_ptr_80170014(Entity* self) {} -#endif +void func_ptr_80170028(void) {} -static int GetWeaponId(void) { return 0; } +void WeaponUnused2C(void) {} -#ifdef VERSION_PSP -static void EntityWeaponShieldSpell(void) {} +void WeaponUnused30(void) {} -static void func_ptr_80170024(void) {} +void WeaponUnused34(void) {} -static void func_ptr_80170028(void) {} -#else -static void EntityWeaponShieldSpell(Entity* self) {} +void WeaponUnused38(void) {} -static void func_ptr_80170024(Entity* self) {} - -static void func_ptr_80170028(Entity* self) {} -#endif - -static void WeaponUnused2C(void) {} - -static void WeaponUnused30(void) {} - -static void WeaponUnused34(void) {} - -static void WeaponUnused38(void) {} - -static void WeaponUnused3C(void) {} - -#ifdef VERSION_PSP -// TODO: this should be WEAPON0_PTR -#ifdef WEAPON0 -extern void D_8017A000[]; -#define WEAPON_PTR D_8017A000 -#else -extern void D_8017D000[]; -#define WEAPON_PTR D_8017D000 -#endif -extern Weapon w0_000_Overlay; - -void w0_000_Load(void) { memcpy(&WEAPON_PTR, &w0_000_Overlay, sizeof(Weapon)); } - -Weapon w0_000_Overlay = { - EntityWeaponAttack, - (void (*)(Entity*))func_ptr_80170004, - (void (*)(Entity*))func_ptr_80170008, - (void (*)(Entity*))func_ptr_8017000C, - func_ptr_80170010, - (void (*)(Entity*))func_ptr_80170014, - GetWeaponId, - LoadWeaponPalette, - (void (*)(Entity*))EntityWeaponShieldSpell, - (void (*)(Entity*))func_ptr_80170024, - (void (*)(Entity*))func_ptr_80170028, - WeaponUnused2C, - WeaponUnused30, - WeaponUnused34, - WeaponUnused38, - WeaponUnused3C, -}; -#endif +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_001.c b/src/weapon/w_001.c index fcd45b375..3553192ae 100644 --- a/src/weapon/w_001.c +++ b/src/weapon/w_001.c @@ -4,7 +4,6 @@ // Unknown#187, Unknown#188 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_001_1.h" #include "gen/w_001_2.h" @@ -395,7 +394,7 @@ s32 func_ptr_80170004(Entity* self) { extern AnimationFrame D_B000_8017AFC8[]; -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { switch (self->step) { case 0: self->flags = FLAG_POS_CAMERA_LOCKED | FLAG_UNK_100000; @@ -441,26 +440,26 @@ static void func_ptr_80170008(Entity* self) { } } -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 1; } +int GetWeaponId(void) { return 1; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_002.c b/src/weapon/w_002.c index 9e3a89efe..9e343efb3 100644 --- a/src/weapon/w_002.c +++ b/src/weapon/w_002.c @@ -1,7 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later // Weapon ID #2. Used by weapons: // Mace - #include "weapon_private.h" #include "gen/w_002_1.h" #include "gen/w_002_2.h" @@ -86,11 +85,10 @@ static u8* anim0[] = { static WeaponAnimation D_12000_8017ABC4[] = { anim0, hitboxes, 0, SFX_WEAPON_SCRAPE_ECHO, 0x48, 0x03, 0}; static u16* g_WeaponCluts[] = {clut0}; -static s32 g_HandId = HAND_ID; #include "shared.h" -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s8 animIndex; @@ -141,28 +139,28 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 2; } +int GetWeaponId(void) { return 2; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_003.c b/src/weapon/w_003.c index 6b1df8ccd..b0e42fb91 100644 --- a/src/weapon/w_003.c +++ b/src/weapon/w_003.c @@ -3,7 +3,6 @@ // Morningstar #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_003_1.h" #include "gen/w_003_2.h" @@ -12,7 +11,7 @@ extern s32 g_HandId; extern WeaponAnimation D_19000_8017AC28[]; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s8 animIndex; @@ -65,28 +64,28 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 3; } +int GetWeaponId(void) { return 3; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_004.c b/src/weapon/w_004.c index 7c8194a68..7c296832c 100644 --- a/src/weapon/w_004.c +++ b/src/weapon/w_004.c @@ -3,7 +3,6 @@ // Holy rod, Unknown#170 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_004_1.h" #include "gen/w_004_2.h" @@ -13,7 +12,7 @@ extern s32 g_HandId; extern WeaponAnimation D_20000_8017B2F4[]; // g_SoundEvents -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s16 subType; @@ -66,28 +65,28 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 4; } +int GetWeaponId(void) { return 4; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_005.c b/src/weapon/w_005.c index 90f1ad60e..414359c74 100644 --- a/src/weapon/w_005.c +++ b/src/weapon/w_005.c @@ -3,7 +3,6 @@ // Star flail, Unknown#171 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_005_1.h" #include "gen/w_005_2.h" @@ -67,28 +66,28 @@ void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 5; } +int GetWeaponId(void) { return 5; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_006.c b/src/weapon/w_006.c index 4f6ec1be7..29270907a 100644 --- a/src/weapon/w_006.c +++ b/src/weapon/w_006.c @@ -1,10 +1,8 @@ // SPDX-License-Identifier: AGPL-3.0-or-later // Weapon ID #6. Used by weapons: // Moon rod, Unknown#172 -#define FUNC_04_VOID #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_006_1.h" #include "gen/w_006_2.h" @@ -16,7 +14,7 @@ extern u16 D_2E000_8017ABD4[]; extern s32 D_2E000_8017ABF0[]; extern WeaponAnimation D_2E000_8017ABC4[]; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s8 animIndex; @@ -67,7 +65,7 @@ static void EntityWeaponAttack(Entity* self) { self->rotPivotY = PLAYER.rotPivotY; } -static void func_ptr_80170004(Entity* self) { +void func_ptr_80170004(Entity* self) { s32 hitboxSize; u16 data; @@ -227,7 +225,7 @@ static s32 func_2E000_8017B6A0(Primitive* prim, s32 x, s32 y) { return 0; } -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { Primitive* prim; s32 posX, posY; s32 range; @@ -267,26 +265,26 @@ static void func_ptr_80170008(Entity* self) { } } -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 6; } +int GetWeaponId(void) { return 6; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_007.c b/src/weapon/w_007.c index e00ec5879..7f241350a 100644 --- a/src/weapon/w_007.c +++ b/src/weapon/w_007.c @@ -1,7 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later // Weapon ID #7. Used by weapons: // Shield rod, Unknown#173 -#define FUNC_04_VOID #include "weapon_private.h" #include "gen/w_007_1.h" #include "gen/w_007_2.h" @@ -190,7 +189,6 @@ static u8 D_35000_8017AC64[6][8] = { {0x70, 0x38, 0x78, 0x38, 0x77, 0x40, 0x78, 0x40}}; static u16* g_WeaponCluts[] = {D_35000_8017A884, D_35000_8017A884}; -static s32 g_HandId = HAND_ID; #include "shared.h" @@ -247,7 +245,7 @@ void EntityWeaponAttack(Entity* self) { self->rotPivotY = PLAYER.rotPivotY; } -static void func_ptr_80170004(Entity* self) { +void func_ptr_80170004(Entity* self) { Entity* parent; s32 index; u16 offsetX, offsetY; @@ -385,7 +383,7 @@ static s32 func_35000_8017B604(Primitive* prim, s32 x, s32 y) { return 0; } -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { Primitive* prim; s32 velocityX; s32 range; @@ -426,26 +424,26 @@ static void func_ptr_80170008(Entity* self) { DestroyEntity(self); } } -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 7; } +int GetWeaponId(void) { return 7; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_008.c b/src/weapon/w_008.c index 28267313f..11f95a381 100644 --- a/src/weapon/w_008.c +++ b/src/weapon/w_008.c @@ -1,7 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later // Weapon ID #8. Used by weapons: // Leather shield, Unknown#203 -#define SHIELDSPELL_S32 #include "weapon_private.h" #include "gen/w_008_1.h" #include "gen/w_008_2.h" @@ -74,11 +73,10 @@ static s32 shieldAngles[] = { 0x1000, 0x1200, 0x1400, 0x1600, 0x1800, 0x1A00, 0x1C00, 0x1E00}; static u16* g_WeaponCluts[] = {(u16*)pal_0, (u16*)pal_0}; -static s32 g_HandId = HAND_ID; #include "shared.h" -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim1; s32 anim2; s32 attackButton; @@ -214,17 +212,17 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 8; } +int GetWeaponId(void) { return 8; } -static s32 EntityWeaponShieldSpell(Entity* self) { +s32 EntityWeaponShieldSpell(Entity* self) { s16 back; s16 front; s16 top; @@ -481,16 +479,16 @@ static s32 EntityWeaponShieldSpell(Entity* self) { } } -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_009.c b/src/weapon/w_009.c index d2d3412d4..66063699c 100644 --- a/src/weapon/w_009.c +++ b/src/weapon/w_009.c @@ -3,7 +3,6 @@ // Knight shield, Unknown#204 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "gen/w_009_1.h" #include "gen/w_009_2.h" #define g_Animset w_009_1 @@ -15,7 +14,7 @@ extern s8 D_43000_8017A9F8; extern AnimationFrame* D_43000_8017AA40; extern s32 D_43000_8017AA78[]; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim1; s32 anim2; s32 attackButton; @@ -151,15 +150,15 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 9; } +int GetWeaponId(void) { return 9; } void EntityWeaponShieldSpell(Entity* self) { s16 back; @@ -430,16 +429,16 @@ void EntityWeaponShieldSpell(Entity* self) { } } -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_010.c b/src/weapon/w_010.c index 35943da86..09ec0a5ed 100644 --- a/src/weapon/w_010.c +++ b/src/weapon/w_010.c @@ -86,7 +86,6 @@ static s16 shieldAngles2[] = { 0x1800, 0x1B00, 0x1E00, 0x2100, 0x2400, 0x2700, 0x2A00, 0x2D00}; static u16* g_WeaponCluts[] = {(u16*)pal_0, (u16*)pal_0}; -static s32 g_HandId = HAND_ID; #include "shared.h" @@ -112,7 +111,7 @@ static void DebugInputWait(const char* msg) { DebugShowWaitInfo(msg); } -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim1; s32 anim2; s32 attackButton; @@ -281,15 +280,15 @@ s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 10; } +int GetWeaponId(void) { return 10; } void EntityWeaponShieldSpell(Entity* self) { Entity* unusedEnt; @@ -729,14 +728,14 @@ void func_ptr_80170024(Entity* self) { } } -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_011.c b/src/weapon/w_011.c index 88ed2944d..14e7728d6 100644 --- a/src/weapon/w_011.c +++ b/src/weapon/w_011.c @@ -3,7 +3,6 @@ // AxeLord shield, Unknown#206 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_011_1.h" #include "gen/w_011_2.h" @@ -18,7 +17,7 @@ extern AnimationFrame D_51000_8017ABE8[]; extern s32 D_51000_8017ABF4[]; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim1; s32 anim2; s32 attackButton; @@ -154,15 +153,15 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 11; } +int GetWeaponId(void) { return 11; } void EntityWeaponShieldSpell(Entity* self) { Primitive* prim; @@ -426,7 +425,7 @@ void EntityWeaponShieldSpell(Entity* self) { } } -static void func_ptr_80170024(Entity* self) { +void func_ptr_80170024(Entity* self) { Collider collider; Entity* unusedEnt; @@ -638,14 +637,14 @@ static void func_ptr_80170024(Entity* self) { self->ext.timer.t++; } -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_012.c b/src/weapon/w_012.c index 76a033f6f..ef2cab561 100644 --- a/src/weapon/w_012.c +++ b/src/weapon/w_012.c @@ -145,13 +145,11 @@ static u16* g_WeaponCluts[] = { D_58000_8017A670, D_58000_8017A7B0, D_58000_8017A2B0, }; -static s32 g_HandId = HAND_ID; - static s32 D_58000_8017BB28; #include "shared.h" -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { Primitive* prim; u16 maskedParams; s32 clut; @@ -316,7 +314,7 @@ static void EntityWeaponAttack(Entity* self) { } /* similar to func_ptr_80170004_w_034 */ -static s32 func_ptr_80170004(Entity* self) { +s32 func_ptr_80170004(Entity* self) { s16 xDiff; s16 yDiff; s16 offsetY; @@ -445,7 +443,7 @@ static s32 func_ptr_80170004(Entity* self) { self->ext.weapon_012.unk9C++; } -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { if (self->step == 0) { if (self->ext.weapon.parent->entityId == 0) { DestroyEntity(self); @@ -471,26 +469,26 @@ static void func_ptr_80170008(Entity* self) { DestroyEntity(self); } -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 12; } +int GetWeaponId(void) { return 12; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_013.c b/src/weapon/w_013.c index d0fcd2ecd..2092bbd7f 100644 --- a/src/weapon/w_013.c +++ b/src/weapon/w_013.c @@ -9,7 +9,6 @@ #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_013_1.h" #include "gen/w_013_2.h" @@ -68,7 +67,7 @@ s32 func_5F000_8017A9CC(Primitive* prim, s32 x, s32 y) { return 0; } -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { Entity* unused; s16 var_s1; @@ -240,7 +239,7 @@ s32 func_ptr_80170004(Entity* self) { DestroyEntity(self); } -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { Entity* ents2; Primitive* prim; s16 angle; @@ -419,7 +418,7 @@ static void func_ptr_80170008(Entity* self) { // Pay attention to unk80, unk8A, and childPalette. These all seem to be // special for Heaven Sword and we should probably have it as a special weapon. -static void func_ptr_8017000C(Entity* self) { +void func_ptr_8017000C(Entity* self) { s16 angle; if (self->ext.weapon.parent->entityId == 0) { @@ -481,24 +480,24 @@ static void func_ptr_8017000C(Entity* self) { } } -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 13; } +int GetWeaponId(void) { return 13; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_014.c b/src/weapon/w_014.c index a802177a9..fbb5e2a54 100644 --- a/src/weapon/w_014.c +++ b/src/weapon/w_014.c @@ -3,7 +3,6 @@ // Runesword #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_014_1.h" #include "gen/w_014_2.h" @@ -272,28 +271,28 @@ s32 func_ptr_80170004(Entity* self) { self->posY.i.hi = baseY + self->ext.weapon.parent->posY.i.hi; } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 14; } +int GetWeaponId(void) { return 14; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_015.c b/src/weapon/w_015.c index 326a15448..3683d141b 100644 --- a/src/weapon/w_015.c +++ b/src/weapon/w_015.c @@ -3,7 +3,6 @@ // Shuriken, Cross shuriken, Buffalo star, Flame star, TNT #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_015_1.h" #include "gen/w_015_2.h" @@ -131,7 +130,7 @@ s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { Entity* factory; if (self->step == 0) { @@ -464,7 +463,7 @@ s32 func_ptr_80170010(Entity* self) { } } -static s32 func_ptr_80170014(Entity* self) { +s32 func_ptr_80170014(Entity* self) { s16 angle; if (self->step == 0) { @@ -509,20 +508,20 @@ static s32 func_ptr_80170014(Entity* self) { self->velocityY += self->ext.weapon.accelerationY; } -static int GetWeaponId(void) { return 15; } +int GetWeaponId(void) { return 15; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_016.c b/src/weapon/w_016.c index 9e5b6232a..f6e116cdf 100644 --- a/src/weapon/w_016.c +++ b/src/weapon/w_016.c @@ -3,7 +3,6 @@ // Bwaka knife, Boomerang, Javelin, Fire boomerang, Iron ball #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_016_1.h" #include "gen/w_016_2.h" @@ -13,7 +12,7 @@ extern s32 g_HandId; // Weapon 16 -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { FakePrim* fakePrim; s16 angle; u16 temp_a0; @@ -219,7 +218,7 @@ void func_ptr_80170008(Entity* self) { } } -static void func_ptr_8017000C(Entity* self) { +void func_ptr_8017000C(Entity* self) { s16 temp_a0; switch (self->step) { @@ -308,7 +307,7 @@ s32 func_ptr_80170010(Entity* self) { // Tracing function calls in emulator indicates that this function manages // the physics for the Iron Ball item. -static s32 func_ptr_80170014(Entity* self) { +s32 func_ptr_80170014(Entity* self) { Collider collider; s16 collX; s16 collY; @@ -500,20 +499,20 @@ static s32 func_ptr_80170014(Entity* self) { } } -static int GetWeaponId(void) { return 16; } +int GetWeaponId(void) { return 16; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_017.c b/src/weapon/w_017.c index 655c1af7c..090d86041 100644 --- a/src/weapon/w_017.c +++ b/src/weapon/w_017.c @@ -133,7 +133,6 @@ static Point16 unused_8017A380[] = { {0, 0}, {0x1, 0}, {0, 0}, {-1, 0}}; static u16* g_WeaponCluts[] = {D_7B000_8017A040, D_7B000_8017A040}; -static s32 g_HandId = HAND_ID; #include "shared.h" extern SVECTOR D_7B000_8017B0F4[LEN(D_7B000_8017A260)][4]; @@ -389,28 +388,28 @@ void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 17; } +int GetWeaponId(void) { return 17; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_018.c b/src/weapon/w_018.c index 198f38662..992630de0 100644 --- a/src/weapon/w_018.c +++ b/src/weapon/w_018.c @@ -3,7 +3,6 @@ // Power of Sire #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_018_1.h" #include "gen/w_018_2.h" @@ -185,28 +184,28 @@ s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 18; } +int GetWeaponId(void) { return 18; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_019.c b/src/weapon/w_019.c index 6f392ad32..e3409e31e 100644 --- a/src/weapon/w_019.c +++ b/src/weapon/w_019.c @@ -3,7 +3,6 @@ // Neutron bomb #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_019_1.h" #include "gen/w_019_2.h" @@ -125,28 +124,28 @@ void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 19; } +int GetWeaponId(void) { return 19; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_020.c b/src/weapon/w_020.c index c3c4734b7..a4084f263 100644 --- a/src/weapon/w_020.c +++ b/src/weapon/w_020.c @@ -3,7 +3,6 @@ // Karma Coin #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_020_1.h" #include "gen/w_020_2.h" @@ -25,7 +24,7 @@ extern s32 D_90000_8017AADC[]; extern s32 D_90000_8017AB44[]; extern s32 D_90000_8017C238; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { Collider sp10; Entity* child; Primitive* prim; @@ -429,7 +428,7 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { if (self->ext.weapon.parent->entityId == 0) { DestroyEntity(self); return; @@ -467,26 +466,26 @@ static void func_ptr_80170008(Entity* self) { self->posY.val += self->velocityY; } -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 20; } +int GetWeaponId(void) { return 20; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_021.c b/src/weapon/w_021.c index a74b4950c..2e8549ab5 100644 --- a/src/weapon/w_021.c +++ b/src/weapon/w_021.c @@ -8,7 +8,6 @@ // Chinese bun, Dim Sum set, Pot roast, Sirloin, Turkey, Meal ticket #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_021_1.h" #include "gen/w_021_2.h" @@ -215,7 +214,7 @@ s32 func_97000_8017AF2C(Entity* self, s32 arg1) { return 1; } -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { Collider sp10; s16 xShift; s16 yShift; @@ -530,28 +529,28 @@ s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 21; } +int GetWeaponId(void) { return 21; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_022.c b/src/weapon/w_022.c index d515ae212..bc0ece2e1 100644 --- a/src/weapon/w_022.c +++ b/src/weapon/w_022.c @@ -3,7 +3,6 @@ // Magic Missile #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_022_1.h" #include "gen/w_022_2.h" @@ -108,28 +107,28 @@ s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 22; } +int GetWeaponId(void) { return 22; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_023.c b/src/weapon/w_023.c index 9ade24a56..4d617487d 100644 --- a/src/weapon/w_023.c +++ b/src/weapon/w_023.c @@ -3,7 +3,6 @@ // Herald shield, Unknown#207 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "gen/w_023_1.h" #include "gen/w_023_2.h" #define g_Animset w_023_1 @@ -21,7 +20,7 @@ extern s32 D_A5000_8017AC50[]; extern SVECTOR* D_A5000_8017AC90[]; extern VECTOR D_A5000_8017ACD8; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim1; s32 anim2; s32 attackButton; @@ -169,17 +168,17 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 23; } +int GetWeaponId(void) { return 23; } -static void EntityWeaponShieldSpell(Entity* self) { +void EntityWeaponShieldSpell(Entity* self) { s16 back; s16 front; s16 top; @@ -457,7 +456,7 @@ static void EntityWeaponShieldSpell(Entity* self) { } } -static void func_ptr_80170024(Entity* self) { +void func_ptr_80170024(Entity* self) { s32 unused1; s32 unusedFlag; SVECTOR rotation_axis; @@ -590,7 +589,7 @@ static void func_ptr_80170024(Entity* self) { extern AnimationFrame D_A5000_8017AB58[]; -static void func_ptr_80170028(Entity* self) { +void func_ptr_80170028(Entity* self) { switch (self->step) { case 0: @@ -640,12 +639,12 @@ static void func_ptr_80170028(Entity* self) { break; } } -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_024.c b/src/weapon/w_024.c index 05904b761..c11572efd 100644 --- a/src/weapon/w_024.c +++ b/src/weapon/w_024.c @@ -3,7 +3,6 @@ // Dark shield, Unknown#208 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_024_1.h" #include "gen/w_024_2.h" @@ -16,7 +15,7 @@ extern AnimationFrame* D_AC000_8017AC20; extern s16* D_AC000_8017ACF8[]; extern s32 D_AC000_8017AD08[]; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim1; s32 anim2; s32 attackButton; @@ -177,17 +176,17 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 24; } +int GetWeaponId(void) { return 24; } -static void EntityWeaponShieldSpell(Entity* self) { +void EntityWeaponShieldSpell(Entity* self) { Entity* unusedEnt; Primitive* prim; Primitive* prevPrim; @@ -530,7 +529,7 @@ static void EntityWeaponShieldSpell(Entity* self) { } // Appears to be the entity for the rising rocks as part of the Shield Rod spell -static void func_ptr_80170024(Entity* self) { +void func_ptr_80170024(Entity* self) { Primitive* prim; s16 selfX; s16 selfY; @@ -636,14 +635,14 @@ static void func_ptr_80170024(Entity* self) { } } -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_025.c b/src/weapon/w_025.c index f5040df3e..4cd5d872f 100644 --- a/src/weapon/w_025.c +++ b/src/weapon/w_025.c @@ -3,7 +3,6 @@ // Goddess shield, Unknown#209 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "gen/w_025_1.h" #include "gen/w_025_2.h" #define g_Animset w_025_1 @@ -24,7 +23,7 @@ void func_B3000_8017AF14(const char* fmt, u_long end) { } } -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim1; s32 anim2; s32 attackButton; @@ -160,17 +159,17 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 25; } +int GetWeaponId(void) { return 25; } -static void EntityWeaponShieldSpell(Entity* self) { +void EntityWeaponShieldSpell(Entity* self) { Entity* unusedEnt; Primitive* prim; Primitive* prevPrim; @@ -480,7 +479,7 @@ static void EntityWeaponShieldSpell(Entity* self) { } // Probably the dancing clouds of fog that appear with the shield spell? -static void func_ptr_80170024(Entity* self) { +void func_ptr_80170024(Entity* self) { Primitive* prim; s16 angle; s16 xSize; @@ -608,14 +607,14 @@ static void func_ptr_80170024(Entity* self) { prim->y3 = yVar - (((rsin(angle) >> 4) * ySize) >> 8); } -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_026.c b/src/weapon/w_026.c index c7e522be3..97cc845be 100644 --- a/src/weapon/w_026.c +++ b/src/weapon/w_026.c @@ -3,7 +3,6 @@ // Shaman shield, Unknown#210 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "gen/w_026_1.h" #include "gen/w_026_2.h" #define g_Animset w_026_1 @@ -20,7 +19,7 @@ extern u8 D_BA000_8017AADC[]; extern s32 D_BA000_8017CC3C; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim1; s32 anim2; s32 attackButton; @@ -156,15 +155,15 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 26; } +int GetWeaponId(void) { return 26; } void func_BA000_8017B37C(void) { RECT rect; @@ -194,7 +193,7 @@ void func_BA000_8017B37C(void) { LoadImage(&rect, &g_Clut[1][0x100]); } -static void EntityWeaponShieldSpell(Entity* self) { +void EntityWeaponShieldSpell(Entity* self) { s16 back; s16 front; s16 top; @@ -498,7 +497,7 @@ const SVECTOR D_BA000_8017AB94 = {56, 28, 0}; // When casting the Shaman Shield spell with the Shield Rod, an animation plays // where several stars rotate in 3D around Alucard. This handles that rotation. -static void func_ptr_80170024(Entity* self) { +void func_ptr_80170024(Entity* self) { SVECTOR rotation_axis; VECTOR transfer_vector; MATRIX m; @@ -693,14 +692,14 @@ static void func_ptr_80170024(Entity* self) { } } -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_027.c b/src/weapon/w_027.c index db32611b0..a0643b7b9 100644 --- a/src/weapon/w_027.c +++ b/src/weapon/w_027.c @@ -3,7 +3,6 @@ // Medusa shield, Unknown#211 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "gen/w_027_1.h" #include "gen/w_027_2.h" #define g_Animset w_027_1 @@ -38,7 +37,7 @@ static void DebugInputWait(const char* msg) { } // Duplicate of Weapon 28! -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim = 0; bool crouchCheck = false; s32 attackButton; @@ -172,17 +171,17 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 27; } +int GetWeaponId(void) { return 27; } -static void EntityWeaponShieldSpell(Entity* self) { +void EntityWeaponShieldSpell(Entity* self) { Primitive* prim; s16 selfPosX; s16 selfPosY; @@ -323,7 +322,7 @@ static void EntityWeaponShieldSpell(Entity* self) { return; } -static void func_ptr_80170024(Entity* self) { +void func_ptr_80170024(Entity* self) { Primitive* prim; Primitive* basePrim; s16 angle; @@ -555,7 +554,7 @@ static void func_ptr_80170024(Entity* self) { } } -static void func_ptr_80170028(Entity* self) { +void func_ptr_80170028(Entity* self) { Entity* parent = self->ext.medshieldlaser.parent; if (parent->entityId == 0) { DestroyEntity(self); @@ -581,12 +580,12 @@ static void func_ptr_80170028(Entity* self) { } } -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_028.c b/src/weapon/w_028.c index 6d203ed1b..16986492f 100644 --- a/src/weapon/w_028.c +++ b/src/weapon/w_028.c @@ -3,7 +3,6 @@ // Skull shield, Unknown#212 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_028_1.h" #include "gen/w_028_2.h" @@ -15,7 +14,7 @@ extern s8 D_C8000_8017AA98[]; extern s32 D_C8000_8017AAE0[]; extern s32 D_C8000_8017AB1C[]; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim = 0; bool crouchCheck = false; s32 attackButton; @@ -149,15 +148,15 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 28; } +int GetWeaponId(void) { return 28; } extern s16 D_C8000_8017AB18; extern s16 D_C8000_8017AB1A; @@ -190,7 +189,7 @@ void func_C8000_8017B3D4(void) { LoadImage(&rect, &g_Clut[1][0x100]); } -static void EntityWeaponShieldSpell(Entity* self) { +void EntityWeaponShieldSpell(Entity* self) { s32 i; s16 left; s16 right; @@ -515,7 +514,7 @@ static void EntityWeaponShieldSpell(Entity* self) { func_C8000_8017B3D4(); } -static void func_ptr_80170024(Entity* self) { +void func_ptr_80170024(Entity* self) { Primitive* prim; s32 xShift; s16 selfPosX; @@ -659,14 +658,14 @@ static void func_ptr_80170024(Entity* self) { return; } -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_029.c b/src/weapon/w_029.c index e96795bf2..4e9d5a452 100644 --- a/src/weapon/w_029.c +++ b/src/weapon/w_029.c @@ -4,7 +4,6 @@ // Fire shield, Unknown#213 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_029_1.h" #include "gen/w_029_2.h" @@ -19,9 +18,23 @@ extern u16 D_CF000_8017ACF8[]; extern u16 D_CF000_8017AD04[]; extern u16 D_CF000_8017AD10[]; extern AnimationFrame D_CF000_8017AD24[]; + +typedef struct { + f32 posX; + f32 posY; + s16 unk8; + u16 unkA; + s16 unkC; + s16 unkE; + s16 unk10; + s16 spawnDelay; + s16 unk14; + s16 state; +} FireShieldDragon; + extern FireShieldDragon D_CF000_8017C9A0[][20]; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim; s32 handButton; s32 unkAC_offset; @@ -183,17 +196,17 @@ s32 func_ptr_80170004(Entity* self) { self->ext.weapon.unk80 + D_CF000_8017AD04[g_GameTimer / 2 % 5]; } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 29; } +int GetWeaponId(void) { return 29; } -static void EntityWeaponShieldSpell(Entity* self) { +void EntityWeaponShieldSpell(Entity* self) { Primitive* prim; s32 var_v0; u16 selfX; @@ -343,7 +356,7 @@ static void EntityWeaponShieldSpell(Entity* self) { return; } -static void func_ptr_80170024(Entity* self) { +void func_ptr_80170024(Entity* self) { // All these variables are kind of guessing names, behavior of this // function is a little unclear. Primitive* firstPrim; @@ -553,7 +566,7 @@ static void func_ptr_80170024(Entity* self) { g_api.CreateEntFactoryFromEntity(self, ((g_HandId + 1) << 14) + 100, 0); } -static void func_ptr_80170028(Entity* self) { +void func_ptr_80170028(Entity* self) { if (self->ext.weapon.parent->entityId == 0) { DestroyEntity(self); return; @@ -572,12 +585,12 @@ static void func_ptr_80170028(Entity* self) { } } -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_030.c b/src/weapon/w_030.c index 5effa58b2..9b763b291 100644 --- a/src/weapon/w_030.c +++ b/src/weapon/w_030.c @@ -1,10 +1,8 @@ // SPDX-License-Identifier: AGPL-3.0-or-later // Weapon ID #30. Used by weapons: // Sword of Dawn, Unknown#177 -#define FUNC_04_VOID #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_030_1.h" #include "gen/w_030_2.h" @@ -25,7 +23,7 @@ extern u16 D_D6000_8017A660[]; extern s16 D_D6000_8017A66C[16]; extern s32 D_D6000_8017CC44; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; WeaponAnimation* anim2; s8 animIndex; @@ -994,22 +992,22 @@ s32 func_ptr_80170010(Entity* self) { self->hitboxHeight = hitboxSize; } -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 30; } +int GetWeaponId(void) { return 30; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_031.c b/src/weapon/w_031.c index 5ae100612..ce65c2a98 100644 --- a/src/weapon/w_031.c +++ b/src/weapon/w_031.c @@ -3,7 +3,6 @@ // Basilard, Unknown#174 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_031_1.h" #include "gen/w_031_2.h" @@ -72,28 +71,28 @@ void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 31; } +int GetWeaponId(void) { return 31; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_032.c b/src/weapon/w_032.c index acbe8047a..f28610697 100644 --- a/src/weapon/w_032.c +++ b/src/weapon/w_032.c @@ -3,7 +3,6 @@ // Combat knife, Unknown#175 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_032_1.h" #include "gen/w_032_2.h" @@ -82,28 +81,28 @@ void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 32; } +int GetWeaponId(void) { return 32; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_033.c b/src/weapon/w_033.c index 74bf52cc3..c877f173f 100644 --- a/src/weapon/w_033.c +++ b/src/weapon/w_033.c @@ -3,7 +3,6 @@ // Nunchaku #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_033_1.h" #include "gen/w_033_2.h" @@ -67,28 +66,28 @@ void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 33; } +int GetWeaponId(void) { return 33; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_034.c b/src/weapon/w_034.c index 8a0144bc8..e8c3492bf 100644 --- a/src/weapon/w_034.c +++ b/src/weapon/w_034.c @@ -91,11 +91,10 @@ static WeaponAnimation D_F2000_8017A934[] = { {D_F2000_8017A918, D_F2000_8017A8B4, 0, SFX_WEAPON_SWISH_B, 0x92, 0x04, 0}}; static u16* g_WeaponCluts[] = {(u16*)D_F2000_8017A784, (u16*)D_F2000_8017A784}; -static s32 g_HandId = HAND_ID; #include "shared.h" -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s8 animIndex; @@ -145,7 +144,7 @@ static void EntityWeaponAttack(Entity* self) { self->rotPivotY = PLAYER.rotPivotY; } -static s32 func_ptr_80170004(Entity* self) { +s32 func_ptr_80170004(Entity* self) { s16 xDist; s16 yDist; s16 offsetY; @@ -261,28 +260,28 @@ static s32 func_ptr_80170004(Entity* self) { return; } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 34; } +int GetWeaponId(void) { return 34; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_035.c b/src/weapon/w_035.c index 2e662708a..a8fa73907 100644 --- a/src/weapon/w_035.c +++ b/src/weapon/w_035.c @@ -54,11 +54,9 @@ static WeaponAnimation g_WeaponAnims[] = { static u16* g_WeaponCluts[] = {(u16*)pal0, (u16*)pal0}; -static s32 g_HandId = HAND_ID; - #include "shared.h" -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s8 animIndex; @@ -111,28 +109,28 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 35; } +int GetWeaponId(void) { return 35; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_036.c b/src/weapon/w_036.c index 6d184c55c..7837eee64 100644 --- a/src/weapon/w_036.c +++ b/src/weapon/w_036.c @@ -3,7 +3,6 @@ // Takemitsu #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_036_1.h" #include "gen/w_036_2.h" @@ -12,7 +11,7 @@ extern s32 g_HandId; extern WeaponAnimation D_100000_8017A540[]; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s8 animIndex; @@ -64,28 +63,28 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 36; } +int GetWeaponId(void) { return 36; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_037.c b/src/weapon/w_037.c index fd406e5e9..2efc2c405 100644 --- a/src/weapon/w_037.c +++ b/src/weapon/w_037.c @@ -71,7 +71,6 @@ static AnimationFrame D_107000_8017A798[] = { {0x0004, 0x0014}, {0x0007, 0x0015}, {0x0006, 0x0016}, {0x0003, 0x0017}, {0x0003, 0x0018}, {0x0006, 0x0019}, {0x0002, 0x0015}, {0x0000, 0x0000}}; static u16* g_WeaponCluts[] = {pal_0, pal_0}; -static s32 g_HandId = HAND_ID; s32 D_107000_8017BBE4; Point16 D_107000_8017BBE8[0x50]; @@ -79,7 +78,7 @@ s32 D_107000_8017BD28; #include "shared.h" -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s8 animIndex; @@ -383,7 +382,7 @@ s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { Collider collider; s16 distX; s16 distY; @@ -465,26 +464,26 @@ static void func_ptr_80170008(Entity* self) { } } -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 37; } +int GetWeaponId(void) { return 37; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_038.c b/src/weapon/w_038.c index 074790916..0be5636f3 100644 --- a/src/weapon/w_038.c +++ b/src/weapon/w_038.c @@ -3,7 +3,6 @@ // Rapier, Unknown#191 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_038_1.h" #include "gen/w_038_2.h" @@ -13,7 +12,7 @@ extern s32 g_HandId; extern WeaponAnimation D_10E000_8017ADC0[2]; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s8 animIndex; @@ -184,28 +183,28 @@ s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 38; } +int GetWeaponId(void) { return 38; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_039.c b/src/weapon/w_039.c index 6d91cb83a..19b25cd92 100644 --- a/src/weapon/w_039.c +++ b/src/weapon/w_039.c @@ -3,7 +3,6 @@ // Were Bane, Unknown#190 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_039_1.h" #include "gen/w_039_2.h" @@ -13,7 +12,7 @@ extern s32 g_HandId; extern WeaponAnimation D_115000_8017ADC0[2]; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s8 animIndex; @@ -236,28 +235,28 @@ s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 39; } +int GetWeaponId(void) { return 39; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_040.c b/src/weapon/w_040.c index b015fe31b..d50a87da1 100644 --- a/src/weapon/w_040.c +++ b/src/weapon/w_040.c @@ -74,7 +74,6 @@ static FrameProperty hitboxes[] = { {4, 1, 10, 4}, {0, 0, 3, 3}, {-63, -63, 0, 0}}; static s32 speed_mod[] = {FIX(0.875), FIX(1), FIX(0.75), FIX(1.125)}; static u16* g_WeaponCluts[] = {pal_0}; -static s32 g_HandId = HAND_ID; static s32 D_11C000_8017B540; #include "shared.h" @@ -96,7 +95,7 @@ void func_11C000_8017AC14(void) { LoadImage(&rect, (u_long*)dst); } -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { Collider col; s32 var_a2; s16 xMod; @@ -245,7 +244,7 @@ s32 func_ptr_80170004(Entity* self) { func_11C000_8017AC14(); } -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { s32 var_a1; if (self->step == 0) { @@ -282,7 +281,7 @@ static void func_ptr_80170008(Entity* self) { g_api.UpdateAnim(hitboxes, NULL); } -static void func_ptr_8017000C(Entity* self) { +void func_ptr_8017000C(Entity* self) { if (self->step == 0) { self->animSet = self->ext.weapon.parent->animSet; self->unk5A = self->ext.weapon.parent->unk5A; @@ -298,24 +297,24 @@ static void func_ptr_8017000C(Entity* self) { } } -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 40; } +int GetWeaponId(void) { return 40; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_041.c b/src/weapon/w_041.c index be3e015b5..bd30fd977 100644 --- a/src/weapon/w_041.c +++ b/src/weapon/w_041.c @@ -136,7 +136,6 @@ static s32 D_123000_8017A54C[] = { }; static u16* g_WeaponCluts[] = {D_123000_8017A284}; -static s32 g_HandId = HAND_ID; #include "shared.h" @@ -400,28 +399,28 @@ s32 func_ptr_80170004(Entity* self) { func_123000_8017A914(); } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 41; } +int GetWeaponId(void) { return 41; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_042.c b/src/weapon/w_042.c index c5707bacb..bd9e58a1f 100644 --- a/src/weapon/w_042.c +++ b/src/weapon/w_042.c @@ -3,7 +3,6 @@ // Monster vial 3 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_042_1.h" #include "gen/w_042_2.h" @@ -65,7 +64,7 @@ void func_12A000_8017AC08(void) { LoadImage(&rect, (u_long*)dst); } -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { Collider col; s32 var_a2; s16 xMod; @@ -216,7 +215,7 @@ s32 func_ptr_80170004(Entity* self) { func_12A000_8017AC08(); } -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { s16 unk; s32 modX; @@ -278,7 +277,7 @@ static void func_ptr_80170008(Entity* self) { g_api.UpdateAnim(D_12A000_8017A6DC, NULL); } -static void func_ptr_8017000C(Entity* self) { +void func_ptr_8017000C(Entity* self) { if (self->step == 0) { self->animSet = self->ext.weapon.parent->animSet; self->unk5A = self->ext.weapon.parent->unk5A; @@ -294,24 +293,24 @@ static void func_ptr_8017000C(Entity* self) { } } -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 42; } +int GetWeaponId(void) { return 42; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_043.c b/src/weapon/w_043.c index 2674a3703..8eb5dbea9 100644 --- a/src/weapon/w_043.c +++ b/src/weapon/w_043.c @@ -129,11 +129,10 @@ static WeaponAnimation weaponAnims[] = { {animGroup0, hitboxes, 0, SFX_ALUCARD_SWORD_SWISH, 0x41, 0x04}, {animGroup0, hitboxes, 0, SFX_ALUCARD_SWORD_SWISH, 0x41, 0x04}}; static u16* g_WeaponCluts[] = {pal_0, pal_1, pal_2, pal_3, pal_4}; -static s32 g_HandId = HAND_ID; #include "shared.h" -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s8 animIndex = (self->params & 0x7FFF) >> 8; WeaponAnimation* anim = &weaponAnims[animIndex]; Primitive* prim; @@ -324,7 +323,7 @@ s32 func_ptr_80170004(Entity* self) { self->rotPivotY = PLAYER.rotPivotY; } -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { if (self->step == 0) { self->anim = D_131000_8017AF40; SetSpriteBank1(g_Animset); @@ -366,26 +365,26 @@ static void func_ptr_80170008(Entity* self) { self->rotPivotY = PLAYER.rotPivotY; } -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 43; } +int GetWeaponId(void) { return 43; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_044.c b/src/weapon/w_044.c index fcc17921f..fdf381da4 100644 --- a/src/weapon/w_044.c +++ b/src/weapon/w_044.c @@ -107,7 +107,6 @@ static s32 D_138000_8017A260[] = { 0x800, 0x900, 0xA00, 0xB00, 0xC00, 0xD00, 0xE00, 0xF00}; static u16* g_WeaponCluts[] = {D_138000_8017A040}; -static s32 g_HandId = HAND_ID; #include "shared.h" @@ -341,28 +340,28 @@ void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 44; } +int GetWeaponId(void) { return 44; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_045.c b/src/weapon/w_045.c index 0cea3dcb1..3012260eb 100644 --- a/src/weapon/w_045.c +++ b/src/weapon/w_045.c @@ -1,7 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later // Weapon ID #45. Used by weapons: // Unknown#216 -#define FUNC_0C_S32 #include "weapon_private.h" #include "gen/w_045_1.h" #include "gen/w_045_2.h" @@ -16,7 +15,6 @@ static u16 D_13F000_8017A330[N_ARRAY_PAL][COLORS_PER_PAL] = { 0x80DD, 0xAA5F, 0x84D1, 0x98C6, 0xB5AD, 0xC631, 0x8421}}; static u16* g_WeaponCluts[] = {D_13F000_8017A330}; -static s32 g_HandId = HAND_ID; #include "shared.h" @@ -53,7 +51,7 @@ int func_13F000_8017A718() { return 0; } -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { SetSpriteBank1(w_045_1); if (g_HandId != 0) { g_CurrentEntity->animSet = ANIMSET_OVL(0x12); @@ -81,7 +79,7 @@ static void EntityWeaponAttack(Entity* self) { LoadWeaponPalette(0); } -static s32 func_ptr_80170004(Entity* self) { +s32 func_ptr_80170004(Entity* self) { SetSpriteBank1(w_045_1); if (g_HandId != 0) { g_CurrentEntity->animSet = ANIMSET_OVL(0x12); @@ -156,7 +154,7 @@ static s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { SetSpriteBank1(w_045_1); if (g_HandId != 0) { g_CurrentEntity->animSet = ANIMSET_OVL(0x12); @@ -213,7 +211,7 @@ static void func_ptr_80170008(Entity* self) { } } -static s32 func_ptr_8017000C(Entity* self) { +s32 func_ptr_8017000C(Entity* self) { SetSpriteBank1(w_045_1); if (g_HandId != 0) { g_CurrentEntity->animSet = ANIMSET_OVL(0x12); @@ -277,7 +275,7 @@ static s32 func_ptr_8017000C(Entity* self) { } } -static s32 func_ptr_80170010(Entity* self) { +s32 func_ptr_80170010(Entity* self) { D_13F000_8017B3BC += 0x80; SetSpriteBank1(w_045_1); if (g_HandId != 0) { @@ -359,22 +357,22 @@ static s32 func_ptr_80170010(Entity* self) { } } -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 45; } +int GetWeaponId(void) { return 45; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_046.c b/src/weapon/w_046.c index ca7f7e95c..83e424716 100644 --- a/src/weapon/w_046.c +++ b/src/weapon/w_046.c @@ -181,11 +181,9 @@ static s32 D_146000_8017AC10[] = { static u16* g_WeaponCluts[] = { (u16*)pal_0, (u16*)pal_2, D_146000_8017A670, (u16*)pal_1}; -static s32 g_HandId = HAND_ID; - #include "shared.h" -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { Primitive* prim; s16 angle; s16 baseX, baseY; @@ -331,7 +329,7 @@ static void EntityWeaponAttack(Entity* self) { prim->y3 = baseY - (((rsin(angle) >> 4) * temp_s5) >> 8); } -static s32 func_ptr_80170004(Entity* self) { +s32 func_ptr_80170004(Entity* self) { const int PrimCount = 0x20; Primitive* prim; s16 maskedParams; @@ -523,28 +521,28 @@ static s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 46; } +int GetWeaponId(void) { return 46; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_047.c b/src/weapon/w_047.c index ce2d00ce6..b79f3c438 100644 --- a/src/weapon/w_047.c +++ b/src/weapon/w_047.c @@ -3,7 +3,6 @@ // Dynamite #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_047_1.h" #include "gen/w_047_2.h" @@ -332,28 +331,28 @@ s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 47; } +int GetWeaponId(void) { return 47; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_048.c b/src/weapon/w_048.c index 1335f919d..3ed685841 100644 --- a/src/weapon/w_048.c +++ b/src/weapon/w_048.c @@ -3,7 +3,6 @@ // Thunderbrand, Unknown#178 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_048_1.h" #include "gen/w_048_2.h" @@ -390,26 +389,26 @@ void func_ptr_80170008(Entity* self) { } } -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 48; } +int GetWeaponId(void) { return 48; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_049.c b/src/weapon/w_049.c index 692f7cc3f..a5f0ee72b 100644 --- a/src/weapon/w_049.c +++ b/src/weapon/w_049.c @@ -3,7 +3,6 @@ // Firebrand, Marsil, Unknown#179, Unknown#180 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "gen/w_049_1.h" #include "gen/w_049_2.h" #define g_Animset w_049_1 @@ -463,7 +462,7 @@ s32 func_ptr_80170010(Entity* self) { } } -static s32 func_ptr_80170014(Entity* self) { +s32 func_ptr_80170014(Entity* self) { switch (self->step) { case 0: SetSpriteBank2(g_Animset2); @@ -498,20 +497,20 @@ static s32 func_ptr_80170014(Entity* self) { } } -static int GetWeaponId(void) { return 49; } +int GetWeaponId(void) { return 49; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_050.c b/src/weapon/w_050.c index 19de1e946..e7b4a7b6b 100644 --- a/src/weapon/w_050.c +++ b/src/weapon/w_050.c @@ -132,7 +132,6 @@ static s16 D_162000_8017B030[] = { 24, -14, 64, 0, 24, -14, 64, 0, 20, 2, 64, 0, 18, 14, 48, 34, 24, -16, 64, 0, 24, -14, 64, 0, 24, 4, 48, 34}; static u16* g_WeaponCluts[] = {pal1, pal4, pal0, pal2, pal3}; -static s32 g_HandId = HAND_ID; static s32 prev_player_pose; static Point16 D_162000_8017CBFC[80]; @@ -713,22 +712,22 @@ s32 func_ptr_80170010(Entity* self) { } } -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 50; } +int GetWeaponId(void) { return 50; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_051.c b/src/weapon/w_051.c index bd0bdf421..a22233630 100644 --- a/src/weapon/w_051.c +++ b/src/weapon/w_051.c @@ -167,7 +167,11 @@ static WeaponAnimation D_169000_8017AD18[] = { {D_169000_8017ACBC, hitboxes, 0, SFX_WEAPON_SWISH_C, 0xD6, 4}, {D_169000_8017ACA0, hitboxes, 0, SFX_WEAPON_SWISH_C, 0xD6, 4}, {D_169000_8017ACA0, hitboxes, 0, SFX_WEAPON_SWISH_C, 0xD6, 4}, +#if true || HAND_ID == LEFT_HAND {D_169000_8017ACA0, hitboxes, 0, SFX_WEAPON_SWISH_C, 0xD6, 4}, +#else + {D_169000_8017ACA0, hitboxes, 0, SFX_WEAPON_SWISH_C, 0xA6, 4}, +#endif }; static s16 D_169000_8017AD58[] = { @@ -190,6 +194,12 @@ static s32 color_table[] = { /* 7 */ 0, 0, 0, 0, 0, 0, 0, 0, }; +typedef struct { + s16 isFlipped; + s16 timer; + s16 rotation; +} AnimProperties; + static AnimProperties D_169000_8017AE74[] = { {0, 37, 0x100}, {1, 32, 0xF00}, {0, 48, 0x000}, {1, 24, 0x080}, {0, 37, 0xF40}, {1, 32, 0x0C0}, {0, 48, 0x000}, {1, 24, 0x140}, @@ -203,8 +213,6 @@ static u16 D_169000_8017AEA4[] = { static u16* g_WeaponCluts[] = { D_169000_8017A950, D_169000_8017A990, D_169000_8017A9D0}; -static s32 g_HandId = HAND_ID; - static s32 D_169000_8017C0E0; #include "shared.h" @@ -286,7 +294,7 @@ void func_169000_8017B1DC(s32 arg0) { LoadImage(&rect, (u_long*)dst); } -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s16 subType; @@ -414,7 +422,7 @@ s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { AnimProperties* anim; Primitive* prim; s16 rot; @@ -549,26 +557,26 @@ static void func_ptr_80170008(Entity* self) { prim->y3 = y - (((rsin(rot) >> 4) * t) >> 9); } -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 51; } +int GetWeaponId(void) { return 51; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_052.c b/src/weapon/w_052.c index cd64d06c9..09b751c23 100644 --- a/src/weapon/w_052.c +++ b/src/weapon/w_052.c @@ -157,7 +157,6 @@ static u8 D_170000_8017ABF0[] = { }; static u16* g_WeaponCluts[] = {(u16*)D_170000_8017A808}; -static s32 g_HandId = HAND_ID; #include "shared.h" @@ -172,7 +171,7 @@ s16 D_170000_8017CBB8[NUM_UNK]; STATIC_PAD_BSS(2); f32 D_170000_8017CBD0[NUM_UNK][4]; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim; s32 anim2; s32 attackButton; @@ -338,17 +337,17 @@ static void EntityWeaponAttack(Entity* self) { } } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 52; } +int GetWeaponId(void) { return 52; } -static void EntityWeaponShieldSpell(Entity* self) { +void EntityWeaponShieldSpell(Entity* self) { Primitive* prim; s16 angle; s16 selfX; @@ -834,16 +833,16 @@ s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_053.c b/src/weapon/w_053.c index 7e1325e98..4e99fd5df 100644 --- a/src/weapon/w_053.c +++ b/src/weapon/w_053.c @@ -4,7 +4,6 @@ // Unknown#193, Unknown#194 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_053_1.h" #include "gen/w_053_2.h" @@ -263,7 +262,7 @@ s32 func_ptr_80170004(Entity* self) { prim->y3 = y - (((rsin(angle) >> 4) * lifetime) >> shift); } -static void func_ptr_80170008(Entity* self) { +void func_ptr_80170008(Entity* self) { switch (self->step) { case 0: self->palette = PAL_FLAG(PAL_ALUCARD); @@ -477,24 +476,24 @@ void func_ptr_8017000C(Entity* self) { prim->y3 = y - (((rsin(angle) >> 4) * lifetime) >> shift); } -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 53; } +int GetWeaponId(void) { return 53; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_054.c b/src/weapon/w_054.c index 5956ab53a..ed5bed42c 100644 --- a/src/weapon/w_054.c +++ b/src/weapon/w_054.c @@ -3,7 +3,6 @@ // Gurthang, Unknown#195 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_054_1.h" #include "gen/w_054_2.h" @@ -185,28 +184,28 @@ void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 54; } +int GetWeaponId(void) { return 54; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_055.c b/src/weapon/w_055.c index c296a679b..4f95ffd7a 100644 --- a/src/weapon/w_055.c +++ b/src/weapon/w_055.c @@ -3,7 +3,6 @@ // Holy sword, Unknown#196 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_055_1.h" #include "gen/w_055_2.h" @@ -175,28 +174,28 @@ s32 func_ptr_80170004(Entity* self) { } } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 55; } +int GetWeaponId(void) { return 55; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_056.c b/src/weapon/w_056.c index 8513e8988..9c68776ae 100644 --- a/src/weapon/w_056.c +++ b/src/weapon/w_056.c @@ -3,7 +3,6 @@ // Muramasa #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_056_1.h" #include "gen/w_056_2.h" @@ -356,28 +355,28 @@ s32 func_ptr_80170004(Entity* self) { prim->y3 = y - (((rsin(angle) >> 4) * lifetime) >> shift); } -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} -static int GetWeaponId(void) { return 56; } +int GetWeaponId(void) { return 56; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_057.c b/src/weapon/w_057.c index c46f8df67..378e49113 100644 --- a/src/weapon/w_057.c +++ b/src/weapon/w_057.c @@ -3,7 +3,6 @@ // Mablung Sword #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "shared.h" #include "gen/w_057_1.h" #include "gen/w_057_2.h" @@ -12,7 +11,7 @@ extern s32 g_HandId; extern WeaponAnimation D_193000_8017B06C[]; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { WeaponAnimation* anim; s8 animIndex; @@ -65,28 +64,28 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} s32 GetWeaponId(void) { return 0; } -static void EntityWeaponShieldSpell(Entity* self) {} +void EntityWeaponShieldSpell(Entity* self) {} -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_058.c b/src/weapon/w_058.c index 06824a954..f51e2f34c 100644 --- a/src/weapon/w_058.c +++ b/src/weapon/w_058.c @@ -3,7 +3,6 @@ // Alucart shield, Unknown#215 #include "weapon_private.h" extern u16* g_WeaponCluts[]; -extern s32 g_HandId; #include "gen/w_058_1.h" #include "gen/w_058_2.h" #define g_Animset w_058_1 @@ -15,7 +14,7 @@ extern s8 D_19A000_8017AB3C; extern AnimationFrame* D_19A000_8017AB84; extern s32 D_19A000_8017BB40; -static void EntityWeaponAttack(Entity* self) { +void EntityWeaponAttack(Entity* self) { s32 anim1; s32 anim2; s32 attackButton; @@ -153,17 +152,17 @@ static void EntityWeaponAttack(Entity* self) { s32 func_ptr_80170004(Entity* self) {} -static void func_ptr_80170008(Entity* self) {} +void func_ptr_80170008(Entity* self) {} -static void func_ptr_8017000C(Entity* self) {} +void func_ptr_8017000C(Entity* self) {} -static s32 func_ptr_80170010(Entity* self) {} +s32 func_ptr_80170010(Entity* self) {} -static s32 func_ptr_80170014(Entity* self) {} +s32 func_ptr_80170014(Entity* self) {} s32 GetWeaponId(void) { return 52; } -static void EntityWeaponShieldSpell(Entity* self) { +void EntityWeaponShieldSpell(Entity* self) { Primitive* prim; s16 primRight; s16 primLeft; @@ -352,16 +351,16 @@ static void EntityWeaponShieldSpell(Entity* self) { } } -static void func_ptr_80170024(Entity* self) {} +void func_ptr_80170024(Entity* self) {} -static void func_ptr_80170028(Entity* self) {} +void func_ptr_80170028(Entity* self) {} -static void WeaponUnused2C(void) {} +void WeaponUnused2C(void) {} -static void WeaponUnused30(void) {} +void WeaponUnused30(void) {} -static void WeaponUnused34(void) {} +void WeaponUnused34(void) {} -static void WeaponUnused38(void) {} +void WeaponUnused38(void) {} -static void WeaponUnused3C(void) {} +void WeaponUnused3C(void) {} diff --git a/src/weapon/w_init.c b/src/weapon/w_init.c new file mode 100644 index 000000000..d7f01d39e --- /dev/null +++ b/src/weapon/w_init.c @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +#include + +void EntityWeaponAttack(Entity* self); +void func_ptr_80170004(Entity* self); +void func_ptr_80170008(Entity* self); +void func_ptr_8017000C(Entity* self); +void func_ptr_80170010(void); +void func_ptr_80170014(Entity* self); +int GetWeaponId(void); +void LoadWeaponPalette(s32 clutIndex); +void EntityWeaponShieldSpell(Entity* self); +void func_ptr_80170024(Entity* self); +void func_ptr_80170028(Entity* self); + +void WeaponUnused2C(void); +void WeaponUnused30(void); +void WeaponUnused34(void); +void WeaponUnused38(void); +void WeaponUnused3C(void); + +Weapon WeaponOverlay = { + EntityWeaponAttack, func_ptr_80170004, func_ptr_80170008, + func_ptr_8017000C, func_ptr_80170010, func_ptr_80170014, + GetWeaponId, LoadWeaponPalette, EntityWeaponShieldSpell, + func_ptr_80170024, func_ptr_80170028, WeaponUnused2C, + WeaponUnused30, WeaponUnused34, WeaponUnused38, + WeaponUnused3C, +}; + +#ifdef VERSION_PSP +// TODO: this should be WEAPON0_PTR +#ifdef WEAPON0 +extern void D_8017A000[]; +#define WEAPON_PTR D_8017A000 +#else +extern void D_8017D000[]; +#define WEAPON_PTR D_8017D000 +#endif + +void WeaponLoad(void) { memcpy(&WEAPON_PTR, &WeaponOverlay, sizeof(Weapon)); } +#endif // VERSION_PSP + +#ifdef VERSION_PC +#include +#include + +void Psyz_ModuleStart(void* param) { + Weapon* o = param; + memcpy(o, &WeaponOverlay, sizeof(Weapon)); +} + +void Psyz_ModuleStop(void) {} +#endif // VERSION_PC diff --git a/src/weapon/weapon_private.h b/src/weapon/weapon_private.h index c3e006f34..6e18428b8 100644 --- a/src/weapon/weapon_private.h +++ b/src/weapon/weapon_private.h @@ -8,6 +8,15 @@ #define WEAPON0 // forces WEAPON0 for the time being #endif +// macros for including assets dynamically based +// on HAND_ID. +// +// PSP keeps a separate copy of the generated animsets per hand. +// clang-format off +#define inner_path(hand, n) CPP_STR(PATH_JOIN(gen/w##hand, n)) +// clang-format on +#define path(hand, n) inner_path(hand, n) + // Used in weapon/w_046, weapon/w_053, weapon/w_056 typedef struct { /* 0x0 */ s16 uFlag; // flipX @@ -21,36 +30,17 @@ typedef struct { /* 0xD */ u8 unused; } WeaponParams; -// Used in weapon/w_051 -typedef struct { - s16 isFlipped; - s16 timer; - s16 rotation; -} AnimProperties; - -// Used in weapon/w_029 -typedef struct { - f32 posX; - f32 posY; - s16 unk8; - u16 unkA; - s16 unkC; - s16 unkE; - s16 unk10; - s16 spawnDelay; - s16 unk14; - s16 state; -} FireShieldDragon; - #if defined(WEAPON0) -#define HAND_ID 0 +#define HAND_ID LEFT_HAND #elif defined(WEAPON1) -#define HAND_ID 1 +#define HAND_ID RIGHT_HAND #else #warning "WEAPON0 or WEAPON1 not specified. Falling back to WEAPON0." -#define HAND_ID 0 +#define HAND_ID LEFT_HAND #endif +extern s32 g_HandId; + // Weapon Factories all encode `g_HandId` at the top of the params #define WFACTORY(id, param) (((g_HandId + 1) << 12) + FACTORY(id, param)) @@ -60,67 +50,4 @@ typedef struct { // addition operation and is required for all other instances. #define WFACTORY2(id, param) FACTORY(((g_HandId + 1) << 12) + (id), (param)) -// PSP builds one overlay per weapon per hand, so each w*_*.c declares its own -// entry points and overlay table rather than sharing the ones below. -#ifndef VERSION_PSP -// exported -static void EntityWeaponAttack(Entity* self); -static void LoadWeaponPalette(s32 clutIndex); -#ifndef FUNC_04_VOID -static s32 func_ptr_80170004(Entity* self); -#else -static void func_ptr_80170004(Entity* self); -#endif -static void func_ptr_80170008(Entity* self); -#ifdef FUNC_0C_S32 -static s32 func_ptr_8017000C(Entity* self); -#else -static void func_ptr_8017000C(Entity* self); -#endif -static s32 func_ptr_80170010(Entity* self); -static s32 func_ptr_80170014(Entity* self); -static int GetWeaponId(void); -#ifdef SHIELDSPELL_S32 -static s32 EntityWeaponShieldSpell(Entity* self); -#else -static void EntityWeaponShieldSpell(Entity* self); -#endif -static void func_ptr_80170024(Entity* self); -static void func_ptr_80170028(Entity* self); -static void WeaponUnused2C(void); -static void WeaponUnused30(void); -static void WeaponUnused34(void); -static void WeaponUnused38(void); -static void WeaponUnused3C(void); - -void DestroyEntity(Entity* entity); -static void SetSpriteBank1(SpriteParts* animset); -static void SetSpriteBank2(SpriteParts* animset); -static void DecelerateX(s32 amount); -static void DecelerateY(s32 amount); -static void SetSpeedX(s32 speed); - -static Weapon header = { - EntityWeaponAttack, func_ptr_80170004, func_ptr_80170008, - func_ptr_8017000C, func_ptr_80170010, func_ptr_80170014, - GetWeaponId, LoadWeaponPalette, EntityWeaponShieldSpell, - func_ptr_80170024, func_ptr_80170028, WeaponUnused2C, - WeaponUnused30, WeaponUnused34, WeaponUnused38, - WeaponUnused3C, -}; - -#endif // !VERSION_PSP - -#ifdef VERSION_PC -#include -#include - -void Psyz_ModuleStart(void* param) { - Weapon* o = param; - memcpy(o, &header, sizeof(Weapon)); -} - -void Psyz_ModuleStop(void) {} -#endif - #endif diff --git a/tools/builds/gen.py b/tools/builds/gen.py index 1857c555e..c23768a16 100644 --- a/tools/builds/gen.py +++ b/tools/builds/gen.py @@ -7,6 +7,7 @@ from dataclasses import dataclass import ninja_syntax import os from pathlib import Path +import re import sys import yaml @@ -42,10 +43,20 @@ def is_hd(ver: str) -> bool: def is_weapon(ovl_name: str) -> bool: return ( - ovl_name == "weapon" or ovl_name.startswith("w0_") or ovl_name.startswith("w1_") + ovl_name == "weapon" + or ovl_name == "weapon1" + or ovl_name.startswith("w0_") + or ovl_name.startswith("w1_") ) +def weapon_hand(ovl_name: str) -> int: + if ovl_name == "weapon1": + return 1 + else: + return 0 + + def is_servant(ovl_name: str) -> bool: return ovl_name.startswith("tt_") @@ -391,12 +402,14 @@ def add_gfx_stage( ) -def add_gfx_weapon(nw: ninja_syntax, ver: str, base_file: str, linker_path: str): - ovl_id = os.path.basename(base_file).strip("f_") +def add_gfx_weapon( + nw: ninja_syntax, ver: str, base_file: str, linker_path: str, hand_id: int +): + ovl_id = os.path.basename(base_file).strip("f_").strip("f1_") in_file = f"{base_file}.png" step_raw = build_path(ver, f"{base_file}.bin") - step_elf = build_path(ver, f"weapon/f0_{ovl_id}.elf") - step_bin = build_path(ver, f"weapon/f0_{ovl_id}.bin") + step_elf = build_path(ver, f"weapon/f{hand_id}_{ovl_id}.elf") + step_bin = build_path(ver, f"weapon/f{hand_id}_{ovl_id}.bin") nw.build( rule="psx-strip", outputs=step_bin, @@ -420,8 +433,7 @@ def add_gfx_weapon(nw: ninja_syntax, ver: str, base_file: str, linker_path: str) return step_bin -def add_weapon_splat_config(nw: ninja_syntax.Writer, ver: str, splat_config): - hand_id = 0 # hardcoded for the time being +def add_weapon_splat_config(nw: ninja_syntax.Writer, ver: str, splat_config, hand_id): platform = str(splat_config["options"]["platform"]) asset_path = str(splat_config["options"]["asset_path"]) ld_path = str(splat_config["options"]["ld_script_path"]) @@ -465,32 +477,48 @@ def add_weapon_splat_config(nw: ninja_syntax.Writer, ver: str, splat_config): if not sotn_progress_report: weapons.append( add_gfx_weapon( - nw, ver, os.path.join(asset_path, weapon_gfx), ld_path + nw, + ver, + os.path.join(asset_path, weapon_gfx), + ld_path, + hand_id, ) ) continue if segment["type"] != "code": continue - weapon_id = weapon_gfx[2:] + weapon_id = re.sub(r"^f\d*_", "", weapon_gfx) cpp_flags = f"-DW_{weapon_id} -DWEAPON{hand_id}" + needs_w_init = False objs = [] for subsegment in segment["subsegments"]: kind = subsegment[1] + name = subsegment[2] if kind == "data": - obj = add_s(nw, ver, f"{asm_path}/data/w_{weapon_id}.data.s", ld_path) + obj = add_s(nw, ver, f"{asm_path}/data/{name}.data.s", ld_path) objs.append(obj) elif kind == "sbss": obj = add_s(nw, ver, f"{asm_path}/data/w_{weapon_id}.sbss.s", ld_path) objs.append(obj) elif kind == "c": - obj = add_c(nw, ver, f"{src_path}/w_{weapon_id}.c", ld_path, cpp_flags) + obj = add_c(nw, ver, f"{src_path}/{name}.c", ld_path, cpp_flags) objs.insert(0, obj) # the C file needs to always be linked first elif kind == ".data": + if name == "left_hand" or name == "right_hand": + obj = add_c(nw, ver, f"{src_path}/{name}.c", ld_path, cpp_flags) + objs.append(obj) # the C file needs to always be linked first + elif name == "w_init": + # this needs to be prepended before all other objects + needs_w_init = True continue elif kind == ".rodata": continue elif kind == ".bss": continue + elif kind == "asm": + obj = add_s(nw, ver, f"{asm_path}/{name}.s", ld_path) + objs.append(obj) + continue else: raise Exception(f"unknown subsegment type {kind}") if sotn_progress_report: @@ -501,6 +529,11 @@ def add_weapon_splat_config(nw: ninja_syntax.Writer, ver: str, splat_config): f"-T {undefined_funcs_auto_path}", f"-T {undefined_syms_auto_path}", ] + + if needs_w_init: + obj = add_c(nw, ver, f"{src_path}/w_init.c", ld_path, cpp_flags) + # w_init needs to come first because it's the header + objs.insert(0, obj) nw.build( rule="psx-ld", outputs=step_elf, @@ -525,7 +558,7 @@ def add_weapon_splat_config(nw: ninja_syntax.Writer, ver: str, splat_config): return nw.build( rule="concat", - outputs=build_path(ver, f"WEAPON0.BIN"), + outputs=build_path(ver, f"WEAPON{hand_id}.BIN"), inputs=weapons, ) @@ -578,7 +611,7 @@ def add_splat_config(nw: ninja_syntax.Writer, ver: str, file_name: str): # the bespoke builder below. PSP ships each weapon as its own w0_/w1_ # overlay, so those go through the generic overlay path instead. if not is_psp(ver) and is_weapon(ovl_name): - add_weapon_splat_config(nw, ver, splat_config) + add_weapon_splat_config(nw, ver, splat_config, weapon_hand(ovl_name)) return target_path = str(splat_config["options"]["target_path"]) asset_path = str(splat_config["options"]["asset_path"]) diff --git a/tools/progress.py b/tools/progress.py index 3f1fb01e3..b2861ebee 100644 --- a/tools/progress.py +++ b/tools/progress.py @@ -212,8 +212,8 @@ class DecompProgressWeaponStats: code_matching_prev: int functions_prev: int - def __init__(self): - self.name = "weapon" + def __init__(self, hand_id: int): + self.name = f"weapon{hand_id}" self.exists = True self.code_matching = 0 self.code_total = 0 @@ -222,7 +222,11 @@ class DecompProgressWeaponStats: self.data_imported = 0 self.data_total = 0 for i in range(0, 59): - stats = DecompProgressStats("weapon", f"weapon/w0_{i:03d}", "weapon") + if hand_id == 1: + name = self.name + else: + name = "weapon" + stats = DecompProgressStats(name, f"weapon/w{hand_id}_{i:03d}", "weapon") if stats.exists: self.code_matching += stats.code_matching self.code_total += stats.code_total @@ -414,7 +418,8 @@ if __name__ == "__main__": progress = dict[str, DecompProgressStats]() progress["main"] = DecompProgressStats("main", "main") progress["dra"] = DecompProgressStats("dra", "dra") - progress["weapon"] = DecompProgressWeaponStats() + progress["weapon"] = DecompProgressWeaponStats(0) + progress["weapon1"] = DecompProgressWeaponStats(1) progress["ric"] = DecompProgressStats("ric", "ric") progress["maria"] = DecompProgressStats("maria", "maria") progress["stare"] = DecompProgressStats("stare", "st/are") diff --git a/weapon1.ld b/weapon1.ld index dc6ff8e87..0ebe5dc3f 100644 --- a/weapon1.ld +++ b/weapon1.ld @@ -4,6 +4,7 @@ SECTIONS { *(.data) *(.rodata) *(.text) + *(.bss) } end = .;