diff --git a/assets/assets.json b/assets/assets.json index 67bbda54..eba30550 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -28602,177 +28602,6 @@ "start": 858702, "size": 22 }, - { - "path": "gyorgFemale/gUnk_080D1A84.bin", - "start": 858756, - "size": 16 - }, - { - "path": "gyorgFemale/gUnk_080D1A94_JP.bin", - "variants": [ - "JP" - ], - "starts": { - "JP": 858164 - }, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1A94_1_DEMO_JP.bin", - "variants": [ - "DEMO_JP" - ], - "starts": { - "DEMO_JP": 856792 - }, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1A94_2_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 856512 - }, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1A94_3_USA-DEMO_USA.bin", - "variants": [ - "USA", - "DEMO_USA" - ], - "start": 858772, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1AAC_JP.bin", - "variants": [ - "JP" - ], - "starts": { - "JP": 858188 - }, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1AAC_1_DEMO_JP.bin", - "variants": [ - "DEMO_JP" - ], - "starts": { - "DEMO_JP": 856816 - }, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1AAC_2_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 856536 - }, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1AAC_3_USA-DEMO_USA.bin", - "variants": [ - "USA", - "DEMO_USA" - ], - "start": 858796, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1AC4_JP.bin", - "variants": [ - "JP" - ], - "starts": { - "JP": 858212 - }, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1AC4_1_DEMO_JP.bin", - "variants": [ - "DEMO_JP" - ], - "starts": { - "DEMO_JP": 856840 - }, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1AC4_2_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 856560 - }, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1AC4_3_USA-DEMO_USA.bin", - "variants": [ - "USA", - "DEMO_USA" - ], - "start": 858820, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1ADC_JP.bin", - "variants": [ - "JP" - ], - "starts": { - "JP": 858236 - }, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1ADC_1_DEMO_JP.bin", - "variants": [ - "DEMO_JP" - ], - "starts": { - "DEMO_JP": 856864 - }, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1ADC_2_EU.bin", - "variants": [ - "EU" - ], - "starts": { - "EU": 856584 - }, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1ADC_3_USA-DEMO_USA.bin", - "variants": [ - "USA", - "DEMO_USA" - ], - "start": 858844, - "size": 24 - }, - { - "path": "gyorgFemale/gUnk_080D1AF4.bin", - "start": 858868, - "size": 4 - }, - { - "path": "gyorgFemale/gUnk_080D1AF8.bin", - "start": 858872, - "size": 4 - }, { "path": "animations/gSpriteAnimations_GyorgMale_0.bin", "start": 859248, @@ -28959,11 +28788,6 @@ "size": 6, "type": "animation" }, - { - "path": "gyorgChild/gUnk_080D1EA0.bin", - "start": 859808, - "size": 22 - }, { "path": "animations/gSpriteAnimations_GyorgFemaleEye_0.bin", "start": 860240, @@ -29108,21 +28932,6 @@ "size": 16, "type": "animation" }, - { - "path": "gyorgFemaleEye/gUnk_080D1F90.bin", - "start": 860048, - "size": 128 - }, - { - "path": "gyorgFemaleEye/gUnk_080D2010.bin", - "start": 860176, - "size": 32 - }, - { - "path": "gyorgFemaleEye/gUnk_080D2030.bin", - "start": 860208, - "size": 32 - }, { "path": "animations/gSpriteAnimations_Enemy62_0.bin", "start": 861032, @@ -29541,51 +29350,6 @@ "size": 17, "type": "animation" }, - { - "path": "gyorgFemaleMouth/gUnk_080D28CC.bin", - "start": 862412, - "size": 16 - }, - { - "path": "gyorgFemaleMouth/gUnk_080D28DC.bin", - "start": 862428, - "size": 8 - }, - { - "path": "gyorgFemaleMouth/gUnk_080D28E4.bin", - "start": 862436, - "size": 8 - }, - { - "path": "gyorgFemaleMouth/gUnk_080D28EC.bin", - "start": 862444, - "size": 8 - }, - { - "path": "gyorgFemaleMouth/gUnk_080D28F4.bin", - "start": 862452, - "size": 8 - }, - { - "path": "gyorgFemaleMouth/gUnk_080D28FC.bin", - "start": 862460, - "size": 8 - }, - { - "path": "gyorgFemaleMouth/gUnk_080D2904.bin", - "start": 862468, - "size": 8 - }, - { - "path": "gyorgFemaleMouth/gUnk_080D290C.bin", - "start": 862476, - "size": 8 - }, - { - "path": "gyorgFemaleMouth/gUnk_080D2914.bin", - "start": 862484, - "size": 8 - }, { "path": "enemy64/gUnk_080D29B8.bin", "start": 862648, @@ -47121,11 +46885,6 @@ "start": 1200092, "size": 20 }, - { - "path": "gyorgBossObject/gUnk_08124EF8.bin", - "start": 1199864, - "size": 16 - }, { "path": "windcrest/gUnk_08125010.bin", "start": 1200144, diff --git a/data/const/enemy/gyorgChild.s b/data/const/enemy/gyorgChild.s deleted file mode 100644 index aa870879..00000000 --- a/data/const/enemy/gyorgChild.s +++ /dev/null @@ -1,29 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_080D1E6C:: @ 080D1E6C - .4byte sub_08048684 - .4byte sub_0804869C - .4byte sub_08001324 - .4byte sub_0804A7D4 - .4byte sub_08001242 - .4byte sub_080486AC - -gUnk_080D1E84:: @ 080D1E84 - .4byte sub_080486F4 - .4byte sub_0804877C - .4byte sub_0804882C - .4byte sub_08048904 - -gUnk_080D1E94:: @ 080D1E94 - .4byte sub_080486D0 - .4byte sub_080486D8 - .4byte sub_080486E0 - -gUnk_080D1EA0:: @ 080D1EA0 - .incbin "gyorgChild/gUnk_080D1EA0.bin" - - diff --git a/data/const/enemy/gyorgFemale.s b/data/const/enemy/gyorgFemale.s deleted file mode 100644 index 478654f4..00000000 --- a/data/const/enemy/gyorgFemale.s +++ /dev/null @@ -1,95 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_080D1A64:: @ 080D1A64 - .4byte sub_0804614C - .4byte sub_0804625C - .4byte sub_0804632C - .4byte sub_080463E4 - -gUnk_080D1A74:: @ 080D1A74 - .4byte gUnk_080D1A94 - .4byte gUnk_080D1AAC - .4byte gUnk_080D1AC4 - .4byte gUnk_080D1ADC - -gUnk_080D1A84:: @ 080D1A84 - .incbin "gyorgFemale/gUnk_080D1A84.bin" - -gUnk_080D1A94:: @ 080D1A94 -.ifdef JP - @ TODO only small differences - .incbin "gyorgFemale/gUnk_080D1A94_JP.bin" -.else -.ifdef DEMO_JP - @ TODO only small differences - .incbin "gyorgFemale/gUnk_080D1A94_1_DEMO_JP.bin" -.else -.ifdef EU - .incbin "gyorgFemale/gUnk_080D1A94_2_EU.bin" -.else - .incbin "gyorgFemale/gUnk_080D1A94_3_USA-DEMO_USA.bin" -.endif -.endif -.endif - - -gUnk_080D1AAC:: @ 080D1AAC -.ifdef JP - @ TODO only small differences - .incbin "gyorgFemale/gUnk_080D1AAC_JP.bin" -.else -.ifdef DEMO_JP - @ TODO only small differences - .incbin "gyorgFemale/gUnk_080D1AAC_1_DEMO_JP.bin" -.else -.ifdef EU - .incbin "gyorgFemale/gUnk_080D1AAC_2_EU.bin" -.else - .incbin "gyorgFemale/gUnk_080D1AAC_3_USA-DEMO_USA.bin" -.endif -.endif -.endif - -gUnk_080D1AC4:: @ 080D1AC4 -.ifdef JP - @ TODO only small differences - .incbin "gyorgFemale/gUnk_080D1AC4_JP.bin" -.else -.ifdef DEMO_JP - @ TODO only small differences - .incbin "gyorgFemale/gUnk_080D1AC4_1_DEMO_JP.bin" -.else -.ifdef EU - .incbin "gyorgFemale/gUnk_080D1AC4_2_EU.bin" -.else - .incbin "gyorgFemale/gUnk_080D1AC4_3_USA-DEMO_USA.bin" -.endif -.endif -.endif - -gUnk_080D1ADC:: @ 080D1ADC -.ifdef JP - @ TODO only small differences - .incbin "gyorgFemale/gUnk_080D1ADC_JP.bin" -.else -.ifdef DEMO_JP - @ TODO only small differences - .incbin "gyorgFemale/gUnk_080D1ADC_1_DEMO_JP.bin" -.else -.ifdef EU - .incbin "gyorgFemale/gUnk_080D1ADC_2_EU.bin" -.else - .incbin "gyorgFemale/gUnk_080D1ADC_3_USA-DEMO_USA.bin" -.endif -.endif -.endif - -gUnk_080D1AF4:: @ 080D1AF4 - .incbin "gyorgFemale/gUnk_080D1AF4.bin" - -gUnk_080D1AF8:: @ 080D1AF8 - .incbin "gyorgFemale/gUnk_080D1AF8.bin" diff --git a/data/const/enemy/gyorgFemaleEye.s b/data/const/enemy/gyorgFemaleEye.s deleted file mode 100644 index 00881c56..00000000 --- a/data/const/enemy/gyorgFemaleEye.s +++ /dev/null @@ -1,29 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_080D1F64:: @ 080D1F64 - .4byte sub_080489B4 - .4byte sub_080489CC - .4byte sub_08001324 - .4byte sub_0804A7D4 - .4byte sub_08001242 - .4byte sub_080489B4 - -gUnk_080D1F7C:: @ 080D1F7C - .4byte sub_08048AF0 - .4byte sub_08048B2C - .4byte sub_08048B84 - .4byte sub_08048BB0 - .4byte sub_08048CEC - -gUnk_080D1F90:: @ 080D1F90 - .incbin "gyorgFemaleEye/gUnk_080D1F90.bin" - -gUnk_080D2010:: @ 080D2010 - .incbin "gyorgFemaleEye/gUnk_080D2010.bin" - -gUnk_080D2030:: @ 080D2030 - .incbin "gyorgFemaleEye/gUnk_080D2030.bin" diff --git a/data/const/enemy/gyorgFemaleMouth.s b/data/const/enemy/gyorgFemaleMouth.s deleted file mode 100644 index 114c93c2..00000000 --- a/data/const/enemy/gyorgFemaleMouth.s +++ /dev/null @@ -1,42 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_080D28AC:: @ 080D28AC - .4byte gUnk_080D28DC - .4byte gUnk_080D28E4 - .4byte gUnk_080D28EC - .4byte gUnk_080D28F4 - .4byte gUnk_080D28FC - .4byte gUnk_080D2904 - .4byte gUnk_080D290C - .4byte gUnk_080D2914 - -gUnk_080D28CC:: @ 080D28CC - .incbin "gyorgFemaleMouth/gUnk_080D28CC.bin" - -gUnk_080D28DC:: @ 080D28DC - .incbin "gyorgFemaleMouth/gUnk_080D28DC.bin" - -gUnk_080D28E4:: @ 080D28E4 - .incbin "gyorgFemaleMouth/gUnk_080D28E4.bin" - -gUnk_080D28EC:: @ 080D28EC - .incbin "gyorgFemaleMouth/gUnk_080D28EC.bin" - -gUnk_080D28F4:: @ 080D28F4 - .incbin "gyorgFemaleMouth/gUnk_080D28F4.bin" - -gUnk_080D28FC:: @ 080D28FC - .incbin "gyorgFemaleMouth/gUnk_080D28FC.bin" - -gUnk_080D2904:: @ 080D2904 - .incbin "gyorgFemaleMouth/gUnk_080D2904.bin" - -gUnk_080D290C:: @ 080D290C - .incbin "gyorgFemaleMouth/gUnk_080D290C.bin" - -gUnk_080D2914:: @ 080D2914 - .incbin "gyorgFemaleMouth/gUnk_080D2914.bin" diff --git a/data/const/object/gyorgBossObject.s b/data/const/object/gyorgBossObject.s deleted file mode 100644 index eb5c2617..00000000 --- a/data/const/object/gyorgBossObject.s +++ /dev/null @@ -1,20 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08124ED0:: @ 08124ED0 - .4byte sub_080A1704 - .4byte sub_080A184C - .4byte sub_080A189C - .4byte sub_080A190C - .4byte sub_080A1990 - .4byte sub_080A19FC - .4byte sub_080A1A80 - .4byte sub_080A1AE8 - .4byte sub_080A1B4C - .4byte sub_080A1C04 - -gUnk_08124EF8:: @ 08124EF8 - .incbin "gyorgBossObject/gUnk_08124EF8.bin" diff --git a/include/enemy/gyorg.h b/include/enemy/gyorg.h index cad4e6ec..66ef35a2 100644 --- a/include/enemy/gyorg.h +++ b/include/enemy/gyorg.h @@ -21,6 +21,11 @@ typedef struct { u8 unk_83[5]; } GyorgFemaleEntity; +typedef struct { + Entity base; + u8 unk_68[0x20]; +} GyorgFemaleEyeEntity; + typedef struct { Entity base; u8 filler[0x20]; diff --git a/linker.ld b/linker.ld index effaf018..4aefcd27 100644 --- a/linker.ld +++ b/linker.ld @@ -1150,20 +1150,20 @@ SECTIONS { src/enemy/vaatiTransfiguredEye.o(.rodata); data/animations/enemy/vaatiTransfiguredEye.o(.rodata); data/const/enemy/businessScrubPrologue.o(.rodata); - data/const/enemy/gyorgFemale.o(.rodata); + src/enemy/gyorgFemale.o(.rodata); src/enemy/gyorgMale.o(.rodata); data/animations/enemy/gyorgMale.o(.rodata); data/const/enemy/curtain.o(.rodata); data/animations/enemy/curtain.o(.rodata); src/enemy/vaatiWrathEye.o(.rodata); data/animations/enemy/vaatiWrathEye.o(.rodata); - data/const/enemy/gyorgChild.o(.rodata); + src/enemy/gyorgChild.o(.rodata); data/animations/enemy/gyorgChild.o(.rodata); - data/const/enemy/gyorgFemaleEye.o(.rodata); + src/enemy/gyorgFemaleEye.o(.rodata); data/animations/enemy/gyorgFemaleEye.o(.rodata); data/const/enemy/enemy62.o(.rodata); data/animations/enemy/enemy62.o(.rodata); - data/const/enemy/gyorgFemaleMouth.o(.rodata); + src/enemy/gyorgFemaleMouth.o(.rodata); data/animations/enemy/gyorgFemaleMouth.o(.rodata); data/const/enemy/enemy64.o(.rodata); src/enemy/treeItem.o(.rodata); @@ -1637,7 +1637,7 @@ SECTIONS { data/const/object/well.o(.rodata); data/const/object/windTribeTeleporter.o(.rodata); data/const/object/objectB9.o(.rodata); - data/const/object/gyorgBossObject.o(.rodata); + src/object/gyorgBossObject.o(.rodata); data/animations/object/gyorgBossObject.o(.rodata); data/const/object/windcrest.o(.rodata); data/const/object/objectBD.o(.rodata); diff --git a/src/enemy/gyorgChild.c b/src/enemy/gyorgChild.c index 87050067..f02713ea 100644 --- a/src/enemy/gyorgChild.c +++ b/src/enemy/gyorgChild.c @@ -1,10 +1,22 @@ #define NENT_DEPRECATED #include "global.h" #include "room.h" +#include "asm.h" #include "functions.h" #include "enemy/gyorg.h" -extern void (*const gUnk_080D1E6C[])(GyorgChildEntity*); +void sub_08048684(GyorgChildEntity*); +void sub_0804869C(GyorgChildEntity*); +void sub_080486AC(GyorgChildEntity*); + +void (*const gUnk_080D1E6C[])(GyorgChildEntity*) = { + sub_08048684, + sub_0804869C, + (void (*)(GyorgChildEntity*))sub_08001324, + (void (*)(GyorgChildEntity*))sub_0804A7D4, + (void (*)(GyorgChildEntity*))sub_08001242, + sub_080486AC, +}; void GyorgChild(Entity* this) { if (gScreenTransition.field_0x39 == 0) { @@ -15,21 +27,35 @@ void GyorgChild(Entity* this) { gUnk_080D1E6C[GetNextFunction(this)]((GyorgChildEntity*)this); } -extern void (*const gUnk_080D1E84[])(GyorgChildEntity*); +void sub_080486F4(GyorgChildEntity*); +void sub_0804877C(GyorgChildEntity*); +void sub_0804882C(GyorgChildEntity*); +void sub_08048904(GyorgChildEntity*); void sub_08048684(GyorgChildEntity* this) { + static void (*const gUnk_080D1E84[])(GyorgChildEntity*) = { + sub_080486F4, + sub_0804877C, + sub_0804882C, + sub_08048904, + }; gUnk_080D1E84[super->action](this); } -extern void (*const gUnk_080D1E6C[])(GyorgChildEntity*); - void sub_0804869C(GyorgChildEntity* this) { sub_0804AA30(super, gUnk_080D1E6C); } -extern void (*const gUnk_080D1E94[])(GyorgChildEntity*); +void sub_080486D0(GyorgChildEntity*); +void sub_080486D8(GyorgChildEntity*); +void sub_080486E0(GyorgChildEntity*); void sub_080486AC(GyorgChildEntity* this) { + static void (*const gUnk_080D1E94[])(GyorgChildEntity*) = { + sub_080486D0, + sub_080486D8, + sub_080486E0, + }; if (sub_0806F520()) { gUnk_080D1E94[super->subAction](this); } @@ -49,9 +75,11 @@ void sub_080486E0(GyorgChildEntity* this) { } } -extern const u8 gUnk_080D1EA0[]; - void sub_080486F4(GyorgChildEntity* this) { + static const s8 gUnk_080D1EA0[] = { + 0x50, 0x1, 0x40, 0x1, 0x30, 0x1, 0x20, 0x1, 0x10, 0x1, 0, + 0, 0x10, -0x1, 0x20, -0x1, 0x30, -0x1, 0x40, -0x1, 0x50, -0x1, + }; super->field_0x1c = 1; super->spriteOrientation.flipY = 3; super->spriteRendering.b3 = 3; diff --git a/src/enemy/gyorgFemale.c b/src/enemy/gyorgFemale.c index 508098bb..33e96136 100644 --- a/src/enemy/gyorgFemale.c +++ b/src/enemy/gyorgFemale.c @@ -13,7 +13,7 @@ extern u8 gMapDataTopSpecial[]; extern u16 gUnk_02019EE0[]; -extern void sub_080197D4(u32); +extern void sub_080197D4(const void*); extern u32 sub_08000E62(u32); extern void RegisterTransitionManager(void*, void (*)(), void (*)()); @@ -28,17 +28,23 @@ void sub_08046668(GyorgFemaleEntity*); void sub_08046518(void); void sub_080467DC(GyorgFemaleEntity*); -extern void (*const gUnk_080D1A64[])(GyorgFemaleEntity*); -extern u32 gUnk_080D1A74[]; extern u8 gUpdateVisibleTiles; extern u8 gUnk_080B3E80[]; extern u8 gUnk_080B37A0[]; extern u16 gMetatileTypesTop[]; -extern const u16 gUnk_080D1A84[]; -extern const u8 gUnk_080D1AF4[]; -extern const u8 gUnk_080D1AF8[]; + +void sub_0804614C(GyorgFemaleEntity*); +void sub_0804625C(GyorgFemaleEntity*); +void sub_0804632C(GyorgFemaleEntity*); +void sub_080463E4(GyorgFemaleEntity*); void GyorgFemale(Entity* this) { + static void (*const gUnk_080D1A64[])(GyorgFemaleEntity*) = { + sub_0804614C, + sub_0804625C, + sub_0804632C, + sub_080463E4, + }; gUnk_080D1A64[this->action]((GyorgFemaleEntity*)this); } @@ -211,7 +217,18 @@ void sub_08046498(GyorgFemaleEntity* this) { } #endif +extern const u8 gUnk_080D1A94[]; +extern const u8 gUnk_080D1AAC[]; +extern const u8 gUnk_080D1AC4[]; +extern const u8 gUnk_080D1ADC[]; + void sub_080464C0(GyorgFemaleEntity* this) { + static const void* const gUnk_080D1A74[] = { + gUnk_080D1A94, + gUnk_080D1AAC, + gUnk_080D1AC4, + gUnk_080D1ADC, + }; s32 i; u8* src; u8* dst; @@ -261,6 +278,9 @@ void sub_080465C8(void) { } void sub_0804660C(GyorgFemaleEntity* this, u32 unk1) { + static const u16 gUnk_080D1A84[] = { + 0x200, 0x258, 0x1B8, 0x210, 0x200, 0x1C8, 0x248, 0x210, + }; const u16* p; super->animationState = unk1; p = &gUnk_080D1A84[unk1 >> 5]; @@ -268,7 +288,85 @@ void sub_0804660C(GyorgFemaleEntity* this, u32 unk1) { super->y.HALF.HI = p[1] + gRoomControls.roomOriginY; } +// todo: correct type +const u8 gUnk_080D1A94[] = { +#if defined(JP) || defined(DEMO_JP) + 0x7C, +#elif defined(EU) + 0x50, +#else + 0x08, +#endif + 0x41, 0x22, 0x80, 0xE0, 0x9E, 0x01, 0x02, 0x00, 0x08, 0x00, 0x80, +#if defined(JP) || defined(DEMO_JP) + 0x2C, 0xD3, +#elif defined(EU) + 0x00, 0xD3, +#else + 0xB8, 0xD2, +#endif + 0x22, 0x00, 0x54, 0xB6, 0x00, 0x02, 0x80, 0x1F, 0x00, 0x80, +}; + +const u8 gUnk_080D1AAC[] = { +#if defined(JP) || defined(DEMO_JP) + 0xFC, +#elif defined(EU) + 0xD0, +#else + 0x88, +#endif + 0x3D, 0x22, 0x80, 0xE0, 0x9E, 0x01, 0x02, 0x00, 0x08, 0x00, 0x80, +#if defined(JP) || defined(DEMO_JP) + 0xF8, +#elif defined(EU) + 0xCC, +#else + 0x84, +#endif + 0xD6, 0x22, 0x00, 0x54, 0xB6, 0x00, 0x02, 0x80, 0x1F, 0x00, 0x80, +}; + +const u8 gUnk_080D1AC4[] = { +#if defined(JP) || defined(DEMO_JP) + 0xE4, +#elif defined(EU) + 0xB8, +#else + 0x70, +#endif + 0x36, 0x22, 0x80, 0xE0, 0x9E, 0x01, 0x02, 0x00, 0x08, 0x00, 0x80, +#if defined(JP) || defined(DEMO_JP) + 0xC0, +#elif defined(EU) + 0x94, +#else + 0x4C, +#endif + 0xDA, 0x22, 0x00, 0x54, 0xB6, 0x00, 0x02, 0x80, 0x1F, 0x00, 0x80, +}; + +const u8 gUnk_080D1ADC[] = { +#if defined(JP) || defined(DEMO_JP) + 0x78, +#elif defined(EU) + 0x4C, +#else + 0x04, +#endif + 0x3A, 0x22, 0x80, 0xE0, 0x9E, 0x01, 0x02, 0x00, 0x08, 0x00, 0x80, +#if defined(JP) || defined(DEMO_JP) + 0x88, +#elif defined(EU) + 0x5C, +#else + 0x14, +#endif + 0xDE, 0x22, 0x00, 0x54, 0xB6, 0x00, 0x02, 0x80, 0x1F, 0x00, 0x80, +}; + void sub_08046634(GyorgFemaleEntity* this, u32 unk1) { + static const u8 gUnk_080D1AF4[] = { 2, 3, 6, 7 }; u32 tmp; if (unk1 == 0) { tmp = gUnk_080D1AF4[Random() & 3]; @@ -279,6 +377,7 @@ void sub_08046634(GyorgFemaleEntity* this, u32 unk1) { } void sub_08046668(GyorgFemaleEntity* this) { + static const u8 gUnk_080D1AF8[] = { 0x16, 0x92, 0x94, 0x86 }; if (super->health == 0) { return; } diff --git a/src/enemy/gyorgFemaleEye.c b/src/enemy/gyorgFemaleEye.c index 69482c7a..98582230 100644 --- a/src/enemy/gyorgFemaleEye.c +++ b/src/enemy/gyorgFemaleEye.c @@ -6,21 +6,27 @@ #include "functions.h" #include "enemy/gyorg.h" -typedef struct { - Entity base; - u8 unk_68[0x20]; -} GyorgFemaleEyeEntity; +void sub_080489B4(GyorgFemaleEyeEntity*); +void sub_080489CC(GyorgFemaleEyeEntity*); -extern void (*const gUnk_080D1F64[])(GyorgFemaleEyeEntity*); -extern void (*const gUnk_080D1F7C[])(GyorgFemaleEyeEntity*); - -extern const u8 gUnk_080D2030[]; -extern const u8 gUnk_080D2010[]; +void sub_08048AF0(GyorgFemaleEyeEntity*); +void sub_08048B2C(GyorgFemaleEyeEntity*); +void sub_08048B84(GyorgFemaleEyeEntity*); +void sub_08048BB0(GyorgFemaleEyeEntity*); +void sub_08048CEC(GyorgFemaleEyeEntity*); void sub_08048D20(GyorgFemaleEyeEntity*); - u32 sub_08048D70(GyorgFemaleEntity*); +void (*const gUnk_080D1F64[])(GyorgFemaleEyeEntity*) = { + sub_080489B4, + sub_080489CC, + (void (*)(GyorgFemaleEyeEntity*))sub_08001324, + (void (*)(GyorgFemaleEyeEntity*))sub_0804A7D4, + (void (*)(GyorgFemaleEyeEntity*))sub_08001242, + sub_080489B4, +}; + void GyorgFemaleEye(Entity* this) { if (this->parent->next == NULL) { DeleteThisEntity(); @@ -29,9 +35,33 @@ void GyorgFemaleEye(Entity* this) { } void sub_080489B4(GyorgFemaleEyeEntity* this) { + static void (*const gUnk_080D1F7C[])(GyorgFemaleEyeEntity*) = { + sub_08048AF0, sub_08048B2C, sub_08048B84, sub_08048BB0, sub_08048CEC, + }; gUnk_080D1F7C[super->action](this); } +typedef struct { + u16 x, y; +} xy; + +const xy gUnk_080D1F90[] = { + { 0x1e8, 0x1d8 }, { 0x1f8, 0x1d8 }, { 0x208, 0x1d8 }, { 0x218, 0x1d8 }, { 0x1e8, 0x1e8 }, { 0x1f8, 0x1e8 }, + { 0x208, 0x1e8 }, { 0x218, 0x1e8 }, { 0x238, 0x1f8 }, { 0x238, 0x208 }, { 0x238, 0x218 }, { 0x238, 0x228 }, + { 0x228, 0x1f8 }, { 0x228, 0x208 }, { 0x228, 0x218 }, { 0x228, 0x228 }, { 0x218, 0x248 }, { 0x208, 0x248 }, + { 0x1f8, 0x248 }, { 0x1e8, 0x248 }, { 0x218, 0x238 }, { 0x208, 0x238 }, { 0x1f8, 0x238 }, { 0x1e8, 0x238 }, + { 0x1c8, 0x228 }, { 0x1c8, 0x218 }, { 0x1c8, 0x208 }, { 0x1c8, 0x1f8 }, { 0x1d8, 0x228 }, { 0x1d8, 0x218 }, + { 0x1d8, 0x208 }, { 0x1d8, 0x1f8 }, +}; + +const u8 gUnk_080D2010[] = { + 0, 0, 1, 1, 0, 0, 1, 1, 4, 4, 5, 5, 4, 4, 5, 5, 9, 9, 8, 8, 9, 9, 8, 8, 13, 13, 12, 12, 13, 13, 12, 12, +}; + +const u8 gUnk_080D2030[] = { + 2, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 11, 11, 10, 10, 11, 11, 10, 10, 15, 15, 14, 14, 15, 15, 14, 14, +}; + void sub_080489CC(GyorgFemaleEyeEntity* this) { GyorgFemaleEntity* parent; if (super->health != 0xFF) { @@ -151,13 +181,6 @@ void sub_08048CEC(GyorgFemaleEyeEntity* this) { InitializeAnimation(super, gUnk_080D2010[(super->animationState << 3) + super->type]); } } - -typedef struct { - u16 x, y; -} xy; - -extern const xy gUnk_080D1F90[]; - void sub_08048D20(GyorgFemaleEyeEntity* this) { GyorgFemaleEntity* parent = (GyorgFemaleEntity*)super->parent; const xy* tmp; diff --git a/src/enemy/gyorgFemaleMouth.c b/src/enemy/gyorgFemaleMouth.c index d326f287..09d8f85f 100644 --- a/src/enemy/gyorgFemaleMouth.c +++ b/src/enemy/gyorgFemaleMouth.c @@ -4,8 +4,32 @@ #include "room.h" #include "enemy/gyorg.h" -extern const u16 gUnk_080D28CC[]; -extern Hitbox* const gUnk_080D28AC[]; +extern const Hitbox gUnk_080D28DC; +extern const Hitbox gUnk_080D28E4; +extern const Hitbox gUnk_080D28EC; +extern const Hitbox gUnk_080D28F4; +extern const Hitbox gUnk_080D28FC; +extern const Hitbox gUnk_080D2904; +extern const Hitbox gUnk_080D290C; +extern const Hitbox gUnk_080D2914; + +const Hitbox* const gUnk_080D28AC[] = { + &gUnk_080D28DC, &gUnk_080D28E4, &gUnk_080D28EC, &gUnk_080D28F4, + &gUnk_080D28FC, &gUnk_080D2904, &gUnk_080D290C, &gUnk_080D2914, +}; + +const u16 gUnk_080D28CC[] = { + 0x200, 0x1C8, 0x248, 0x210, 0x200, 0x258, 0x1b8, 0x210, +}; + +const Hitbox gUnk_080D28DC = { 0xE0, 0xF4, { 0, 0, 0, 0 }, 0x8, 0xA }; +const Hitbox gUnk_080D28E4 = { 0x20, 0xF4, { 0, 0, 0, 0 }, 0x8, 0xA }; +const Hitbox gUnk_080D28EC = { 0x0C, 0xE0, { 0, 0, 0, 0 }, 0xA, 0x8 }; +const Hitbox gUnk_080D28F4 = { 0x0C, 0x20, { 0, 0, 0, 0 }, 0xA, 0x8 }; +const Hitbox gUnk_080D28FC = { 0xE0, 0x0C, { 0, 0, 0, 0 }, 0x8, 0xA }; +const Hitbox gUnk_080D2904 = { 0x20, 0x0C, { 0, 0, 0, 0 }, 0x8, 0xA }; +const Hitbox gUnk_080D290C = { 0xF4, 0xE0, { 0, 0, 0, 0 }, 0xA, 0x8 }; +const Hitbox gUnk_080D2914 = { 0xF4, 0x20, { 0, 0, 0, 0 }, 0xA, 0x8 }; void GyorgFemaleMouth(Entity* this) { u32 tmp; @@ -38,5 +62,5 @@ void GyorgFemaleMouth(Entity* this) { tmp++; } } - this->hitbox = gUnk_080D28AC[tmp]; + this->hitbox = (Hitbox*)gUnk_080D28AC[tmp]; // discarding const qualifier with cast } diff --git a/src/object/gyorgBossObject.c b/src/object/gyorgBossObject.c index 9f68eab8..8a28f1ba 100644 --- a/src/object/gyorgBossObject.c +++ b/src/object/gyorgBossObject.c @@ -11,7 +11,6 @@ extern const ScreenTransitionData gUnk_0813ABD0; extern u32 sub_08079F8C(void); -extern const u16 gUnk_08124EF8[]; extern s16* const gUnk_08124FF0[]; extern void sub_080A1DCC(GyorgBossObjectEntity*); @@ -24,9 +23,22 @@ void sub_080A1FF0(GyorgBossObjectEntity*); u32 sub_080A20B8(GyorgBossObjectEntity*, GenericEntity*); void sub_080A1D70(GyorgBossObjectEntity*, u32); -extern void (*const gUnk_08124ED0[])(GyorgBossObjectEntity*); +void sub_080A1704(GyorgBossObjectEntity*); +void sub_080A184C(GyorgBossObjectEntity*); +void sub_080A189C(GyorgBossObjectEntity*); +void sub_080A190C(GyorgBossObjectEntity*); +void sub_080A1990(GyorgBossObjectEntity*); +void sub_080A19FC(GyorgBossObjectEntity*); +void sub_080A1A80(GyorgBossObjectEntity*); +void sub_080A1AE8(GyorgBossObjectEntity*); +void sub_080A1B4C(GyorgBossObjectEntity*); +void sub_080A1C04(GyorgBossObjectEntity*); void GyorgBossObject(Entity* this) { + static void (*const gUnk_08124ED0[])(GyorgBossObjectEntity*) = { + sub_080A1704, sub_080A184C, sub_080A189C, sub_080A190C, sub_080A1990, + sub_080A19FC, sub_080A1A80, sub_080A1AE8, sub_080A1B4C, sub_080A1C04, + }; gUnk_08124ED0[this->action]((GyorgBossObjectEntity*)this); sub_080A1DCC((GyorgBossObjectEntity*)this); sub_080A1C9C((GyorgBossObjectEntity*)this); @@ -130,7 +142,7 @@ void sub_080A190C(GyorgBossObjectEntity* this) { } } -void sub_080A1990(GyorgBossObjectEntity* this, u32 unk1) { +void sub_080A1990(GyorgBossObjectEntity* this) { if (((GyorgFemaleHeap*)super->myHeap)->female->base.health == 0) { ((GyorgFemaleHeap*)super->myHeap)->male1->base.health = 0xC; super->action = 5; @@ -339,6 +351,7 @@ void sub_080A1E54(GyorgBossObjectEntity* this) { } void sub_080A1ED0(u32 unk0, u32 unk1, u32 unk2) { + static const u16 gUnk_08124EF8[] = { 0x200, 0x1C0, 0x250, 0x210, 0x200, 0x260, 0x1B0, 0x210 }; u32 i = 0; s16* p; u32 x, y;