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 = .;