Part of dessgeega and baristute AI

This commit is contained in:
YohannDR 2022-07-28 23:40:35 +02:00
parent 7636f0dfbc
commit c986808b28
8 changed files with 1981 additions and 2532 deletions

View File

@ -35320,8 +35320,8 @@ lbl_08023c6c: .4byte 0x0000ffc0
lbl_08023c70: .4byte 0x082d82dc
lbl_08023c74: .4byte 0x082b0d68
thumb_func_start DessgeegaJumpingGFXInit
DessgeegaJumpingGFXInit: @ 0x08023c78
thumb_func_start DessgeegaJumpWarningInit
DessgeegaJumpWarningInit: @ 0x08023c78
ldr r1, lbl_08023c90 @ =0x03000738
adds r3, r1, #0
adds r3, #0x24
@ -35337,8 +35337,8 @@ DessgeegaJumpingGFXInit: @ 0x08023c78
lbl_08023c90: .4byte 0x03000738
lbl_08023c94: .4byte 0x082d8364
thumb_func_start DessgeegaBeforeJumping
DessgeegaBeforeJumping: @ 0x08023c98
thumb_func_start DessgeegaJumpingInit
DessgeegaJumpingInit: @ 0x08023c98
push {r4, lr}
ldr r3, lbl_08023cd0 @ =0x03000738
adds r1, r3, #0
@ -35389,8 +35389,8 @@ lbl_08023cf4:
bx r0
.align 2, 0
thumb_func_start DessgeegaBeforeLanding
DessgeegaBeforeLanding: @ 0x08023cfc
thumb_func_start DessgeegaLandingInit
DessgeegaLandingInit: @ 0x08023cfc
push {lr}
ldr r1, lbl_08023d28 @ =0x03000738
adds r3, r1, #0
@ -35417,15 +35417,15 @@ lbl_08023d28: .4byte 0x03000738
lbl_08023d2c: .4byte 0x082d839c
lbl_08023d30: .4byte 0x0000015b
thumb_func_start DessgeegaCheckSamusInRange
DessgeegaCheckSamusInRange: @ 0x08023d34
thumb_func_start DessgeegaIdleInit
DessgeegaIdleInit: @ 0x08023d34
push {lr}
bl DessgeegaCheckSamusNearLeftRight
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #0
beq lbl_08023d48
bl DessgeegaJumpingGFXInit
bl DessgeegaJumpWarningInit
b lbl_08023d9e
lbl_08023d48:
ldr r2, lbl_08023d7c @ =0x03000738
@ -35474,8 +35474,8 @@ lbl_08023d9e:
.align 2, 0
lbl_08023da4: .4byte 0x082d8304
thumb_func_start DessgeegaBouncingGFXInit
DessgeegaBouncingGFXInit: @ 0x08023da8
thumb_func_start DessgeegaFallingInit
DessgeegaFallingInit: @ 0x08023da8
ldr r3, lbl_08023dc4 @ =0x03000738
adds r1, r3, #0
adds r1, #0x24
@ -35494,8 +35494,8 @@ DessgeegaBouncingGFXInit: @ 0x08023da8
lbl_08023dc4: .4byte 0x03000738
lbl_08023dc8: .4byte 0x082d8384
thumb_func_start DessgeegaCheckBouncing
DessgeegaCheckBouncing: @ 0x08023dcc
thumb_func_start DessgeegaJumpWarningGround
DessgeegaJumpWarningGround: @ 0x08023dcc
push {r4, r5, lr}
ldr r4, lbl_08023e0c @ =0x03000738
ldrh r0, [r4, #2]
@ -35522,7 +35522,7 @@ DessgeegaCheckBouncing: @ 0x08023dcc
ldrb r0, [r5]
cmp r0, #0
bne lbl_08023e14
bl DessgeegaBouncingGFXInit
bl DessgeegaFallingInit
b lbl_08023e20
.align 2, 0
lbl_08023e0c: .4byte 0x03000738
@ -35531,27 +35531,27 @@ lbl_08023e14:
bl check_end_of_current_sprite_anim
cmp r0, #0
beq lbl_08023e20
bl DessgeegaBeforeJumping
bl DessgeegaJumpingInit
lbl_08023e20:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
thumb_func_start DessgeegaCheckBeforeJumpingCeilingAnimEnded
DessgeegaCheckBeforeJumpingCeilingAnimEnded: @ 0x08023e28
thumb_func_start DessgeegaJumpWarningCeiling
DessgeegaJumpWarningCeiling: @ 0x08023e28
push {lr}
bl check_end_of_current_sprite_anim
cmp r0, #0
beq lbl_08023e36
bl DessgeegaBeforeJumping
bl DessgeegaJumpingInit
lbl_08023e36:
pop {r0}
bx r0
.align 2, 0
thumb_func_start DessgeegaMoveGround
DessgeegaMoveGround: @ 0x08023e3c
thumb_func_start DessgeegaJumpingGround
DessgeegaJumpingGround: @ 0x08023e3c
push {r4, r5, r6, lr}
movs r6, #0
ldr r2, lbl_08023e60 @ =0x03000738
@ -35687,7 +35687,7 @@ lbl_08023f32:
cmp r0, #0
beq lbl_08023f54
strh r1, [r4, #2]
bl DessgeegaBeforeLanding
bl DessgeegaLandingInit
b lbl_08024016
.align 2, 0
lbl_08023f4c: .4byte 0x03000738
@ -35722,7 +35722,7 @@ lbl_08023f86:
lbl_08023f8a:
ldr r0, lbl_08023f94 @ =0x03000738
strh r1, [r0, #2]
bl DessgeegaBeforeLanding
bl DessgeegaLandingInit
b lbl_08024016
.align 2, 0
lbl_08023f94: .4byte 0x03000738
@ -35752,7 +35752,7 @@ lbl_08023f98:
ldrh r0, [r4, #4]
subs r0, #6
strh r0, [r4, #4]
bl DessgeegaBouncingGFXInit
bl DessgeegaFallingInit
b lbl_08024004
.align 2, 0
lbl_08023fd4: .4byte 0x030007f1
@ -35776,7 +35776,7 @@ lbl_08023fd8:
ldrh r0, [r4, #4]
adds r0, #6
strh r0, [r4, #4]
bl DessgeegaBouncingGFXInit
bl DessgeegaFallingInit
lbl_08024004:
cmp r6, #0
beq lbl_08024016
@ -35795,8 +35795,8 @@ lbl_08024016:
lbl_0802401c: .4byte 0x030007f1
lbl_08024020: .4byte 0x03000738
thumb_func_start DessgeegaMoveCeiling
DessgeegaMoveCeiling: @ 0x08024024
thumb_func_start DessgeegaJumpingCeiling
DessgeegaJumpingCeiling: @ 0x08024024
push {r4, r5, r6, r7, lr}
movs r7, #0
ldr r2, lbl_08024048 @ =0x03000738
@ -35939,7 +35939,7 @@ lbl_08024106:
ldrh r0, [r4, #4]
subs r0, #6
strh r0, [r4, #4]
bl DessgeegaBouncingGFXInit
bl DessgeegaFallingInit
b lbl_08024178
.align 2, 0
lbl_08024144: .4byte 0x03000738
@ -35964,7 +35964,7 @@ lbl_0802414c:
ldrh r0, [r4, #4]
adds r0, #6
strh r0, [r4, #4]
bl DessgeegaBouncingGFXInit
bl DessgeegaFallingInit
lbl_08024178:
cmp r7, #0
beq lbl_08024216
@ -36003,7 +36003,7 @@ lbl_080241a4:
adds r0, r2, #0
adds r0, #0x40
strh r0, [r4, #2]
bl DessgeegaBeforeLanding
bl DessgeegaLandingInit
b lbl_08024216
.align 2, 0
lbl_080241c8: .4byte 0x030007f0
@ -36043,7 +36043,7 @@ lbl_0802420a:
adds r0, r2, #0
adds r0, #0x40
strh r0, [r1, #2]
bl DessgeegaBeforeLanding
bl DessgeegaLandingInit
lbl_08024216:
pop {r4, r5, r6, r7}
pop {r0}
@ -36057,14 +36057,14 @@ DessgeegaCheckLandingAnimEnded: @ 0x08024220
bl check_end_of_current_sprite_anim
cmp r0, #0
beq lbl_0802422e
bl DessgeegaCheckSamusInRange
bl DessgeegaIdleInit
lbl_0802422e:
pop {r0}
bx r0
.align 2, 0
thumb_func_start DessgeegaJumpingGroundIntoBlock
DessgeegaJumpingGroundIntoBlock: @ 0x08024234
thumb_func_start DessgeegaFallingGround
DessgeegaFallingGround: @ 0x08024234
push {r4, r5, r6, lr}
movs r6, #0
ldr r4, lbl_08024288 @ =0x03000738
@ -36103,7 +36103,7 @@ lbl_0802427a:
lbl_0802427e:
ldr r0, lbl_08024288 @ =0x03000738
strh r1, [r0, #2]
bl DessgeegaBeforeLanding
bl DessgeegaLandingInit
b lbl_080242d0
.align 2, 0
lbl_08024288: .4byte 0x03000738
@ -36147,8 +36147,8 @@ lbl_080242d0:
bx r0
.align 2, 0
thumb_func_start DessgeegaJumpingCeilingIntoBlock
DessgeegaJumpingCeilingIntoBlock: @ 0x080242d8
thumb_func_start DessgeegaFallingCeiling
DessgeegaFallingCeiling: @ 0x080242d8
push {r4, r5, r6, lr}
movs r6, #0
ldr r4, lbl_08024330 @ =0x03000738
@ -36189,7 +36189,7 @@ lbl_08024322:
adds r0, r2, #0
adds r0, #0x40
strh r0, [r1, #2]
bl DessgeegaBeforeLanding
bl DessgeegaLandingInit
b lbl_08024378
.align 2, 0
lbl_08024330: .4byte 0x03000738
@ -36233,8 +36233,8 @@ lbl_08024378:
bx r0
.align 2, 0
thumb_func_start dessgeega_screaming_anim
dessgeega_screaming_anim: @ 0x08024380
thumb_func_start DessgeegaIdleGround
DessgeegaIdleGround: @ 0x08024380
push {r4, r5, lr}
bl DessgeegaCheckSamusNearLeftRight
lsls r0, r0, #0x18
@ -36260,7 +36260,7 @@ dessgeega_screaming_anim: @ 0x08024380
ldrb r0, [r5]
cmp r0, #0
bne lbl_080243c8
bl DessgeegaBouncingGFXInit
bl DessgeegaFallingInit
b lbl_0802440e
.align 2, 0
lbl_080243c0: .4byte 0x03000738
@ -36282,7 +36282,7 @@ lbl_080243c8:
cmp r1, r0
bne lbl_080243f4
lbl_080243e8:
bl DessgeegaJumpingGFXInit
bl DessgeegaJumpWarningInit
b lbl_0802440e
.align 2, 0
lbl_080243f0: .4byte 0x03000738
@ -36306,8 +36306,8 @@ lbl_0802440e:
.align 2, 0
lbl_08024414: .4byte 0x082d8304
thumb_func_start DessgeegaCeilingdleAnim
DessgeegaCeilingdleAnim: @ 0x08024418
thumb_func_start DessgeegaIdleCeiling
DessgeegaIdleCeiling: @ 0x08024418
push {lr}
bl DessgeegaCheckSamusNearLeftRight
lsls r0, r0, #0x18
@ -36329,7 +36329,7 @@ DessgeegaCeilingdleAnim: @ 0x08024418
cmp r1, r0
bne lbl_08024450
lbl_08024444:
bl DessgeegaJumpingGFXInit
bl DessgeegaJumpWarningInit
b lbl_0802446a
.align 2, 0
lbl_0802444c: .4byte 0x03000738
@ -36352,8 +36352,8 @@ lbl_0802446a:
.align 2, 0
lbl_08024470: .4byte 0x082d8304
thumb_func_start sub_08024474
sub_08024474: @ 0x08024474
thumb_func_start DessgeegaDeath
DessgeegaDeath: @ 0x08024474
push {r4, lr}
sub sp, #4
ldr r4, lbl_0802448c @ =0x03000738
@ -36572,7 +36572,7 @@ lbl_08024644:
movs r0, #0xa
movs r1, #0x81
bl start_vertical_screen_shake
bl DessgeegaBeforeLanding
bl DessgeegaLandingInit
b lbl_0802465a
lbl_08024654:
ldrh r0, [r4, #2]
@ -36700,7 +36700,7 @@ lbl_080247a4:
bl DessgeegaLongBeamSpawning
b lbl_08024836
lbl_080247aa:
bl DessgeegaJumpingGFXInit
bl DessgeegaJumpWarningInit
lbl_080247ae:
ldr r0, lbl_080247c4 @ =0x03000738
ldrh r1, [r0]
@ -36709,12 +36709,12 @@ lbl_080247ae:
ands r0, r1
cmp r0, #0
beq lbl_080247c8
bl DessgeegaCheckBeforeJumpingCeilingAnimEnded
bl DessgeegaJumpWarningCeiling
b lbl_08024836
.align 2, 0
lbl_080247c4: .4byte 0x03000738
lbl_080247c8:
bl DessgeegaCheckBouncing
bl DessgeegaJumpWarningGround
b lbl_08024836
lbl_080247ce:
ldr r0, lbl_080247e4 @ =0x03000738
@ -36724,12 +36724,12 @@ lbl_080247ce:
ands r0, r1
cmp r0, #0
beq lbl_080247e8
bl DessgeegaMoveCeiling
bl DessgeegaJumpingCeiling
b lbl_08024836
.align 2, 0
lbl_080247e4: .4byte 0x03000738
lbl_080247e8:
bl DessgeegaMoveGround
bl DessgeegaJumpingGround
b lbl_08024836
lbl_080247ee:
bl DessgeegaCheckLandingAnimEnded
@ -36742,12 +36742,12 @@ lbl_080247f4:
ands r0, r1
cmp r0, #0
beq lbl_0802480c
bl DessgeegaCeilingdleAnim
bl DessgeegaIdleCeiling
b lbl_08024836
.align 2, 0
lbl_08024808: .4byte 0x03000738
lbl_0802480c:
bl dessgeega_screaming_anim
bl DessgeegaIdleGround
b lbl_08024836
lbl_08024812:
ldr r0, lbl_08024828 @ =0x03000738
@ -36757,15 +36757,15 @@ lbl_08024812:
ands r0, r1
cmp r0, #0
beq lbl_0802482c
bl DessgeegaJumpingCeilingIntoBlock
bl DessgeegaFallingCeiling
b lbl_08024836
.align 2, 0
lbl_08024828: .4byte 0x03000738
lbl_0802482c:
bl DessgeegaJumpingGroundIntoBlock
bl DessgeegaFallingGround
b lbl_08024836
lbl_08024832:
bl sub_08024474
bl DessgeegaDeath
lbl_08024836:
pop {r4}
pop {r0}
@ -106308,8 +106308,8 @@ lbl_080476a4: .4byte 0x0831043c
lbl_080476a8: .4byte 0x0000ff60
lbl_080476ac: .4byte 0x082b0d68
thumb_func_start BaristuteJumpingGFXInit
BaristuteJumpingGFXInit: @ 0x080476b0
thumb_func_start BaristuteJumpWarningInit
BaristuteJumpWarningInit: @ 0x080476b0
push {lr}
ldr r1, lbl_080476dc @ =0x03000738
adds r3, r1, #0
@ -106527,8 +106527,8 @@ lbl_08047856:
.align 2, 0
lbl_0804785c: .4byte 0x030007f1
thumb_func_start BaristuteLandingGFXInit
BaristuteLandingGFXInit: @ 0x08047860
thumb_func_start BaristuteLandingInit
BaristuteLandingInit: @ 0x08047860
push {lr}
ldr r1, lbl_08047894 @ =0x03000738
adds r3, r1, #0
@ -106704,8 +106704,8 @@ lbl_080479ae:
pop {r0}
bx r0
thumb_func_start BaristuteWalkingGFXInit
BaristuteWalkingGFXInit: @ 0x080479b4
thumb_func_start BaristuteWalkingInit
BaristuteWalkingInit: @ 0x080479b4
push {lr}
ldr r3, lbl_080479e4 @ =0x03000738
adds r2, r3, #0
@ -106923,8 +106923,8 @@ lbl_08047b42:
.align 2, 0
lbl_08047b48: .4byte 0x03000738
thumb_func_start BaristuteBouncingGFXInit
BaristuteBouncingGFXInit: @ 0x08047b4c
thumb_func_start BaristuteFallingInit
BaristuteFallingInit: @ 0x08047b4c
ldr r3, lbl_08047b68 @ =0x03000738
adds r1, r3, #0
adds r1, #0x24
@ -106943,8 +106943,8 @@ BaristuteBouncingGFXInit: @ 0x08047b4c
lbl_08047b68: .4byte 0x03000738
lbl_08047b6c: .4byte 0x08310484
thumb_func_start BaristuteBouncing
BaristuteBouncing: @ 0x08047b70
thumb_func_start BaristuteFalling
BaristuteFalling: @ 0x08047b70
push {r4, r5, lr}
ldr r4, lbl_08047b94 @ =0x03000738
ldrh r0, [r4, #2]
@ -107303,7 +107303,7 @@ lbl_08047e74:
bl BaristuteInit
b lbl_08047eb6
lbl_08047e7a:
bl BaristuteJumpingGFXInit
bl BaristuteJumpWarningInit
lbl_08047e7e:
bl BaristuteCheckBeforeJumpingAnimEnded
b lbl_08047eb6
@ -107311,12 +107311,12 @@ lbl_08047e84:
bl BaristuteJumping
b lbl_08047eb6
lbl_08047e8a:
bl BaristuteLandingGFXInit
bl BaristuteLandingInit
lbl_08047e8e:
bl BaristuteCheckLandingAnimNearEnded
b lbl_08047eb6
lbl_08047e94:
bl BaristuteWalkingGFXInit
bl BaristuteWalkingInit
lbl_08047e98:
bl BaristuteWalking
b lbl_08047eb6
@ -107326,9 +107326,9 @@ lbl_08047ea2:
bl BaristuteIdle
b lbl_08047eb6
lbl_08047ea8:
bl BaristuteBouncingGFXInit
bl BaristuteFallingInit
lbl_08047eac:
bl BaristuteBouncing
bl BaristuteFalling
b lbl_08047eb6
lbl_08047eb2:
bl BaristuteDeath

View File

@ -99,7 +99,7 @@
/* generic_data.c */
i16 sSineYValues[320];
u8 random_number_table[256];
u8 sRandomNumberTable[256];
/* blob_0x808ca9c_0x8239463.c */

File diff suppressed because it is too large Load Diff

View File

@ -56,7 +56,7 @@
#define EVENT_CROCOMIRE_KILLED 0x28
#define EVENT_REPEL_MACHINE_KILLED 0x29
#define EVENT_VIEWED_STATUE_ROOM 0x2A
#define EVENT_DESSGEEGA_KILLED 0x2B
#define EVENT_LONG_BEAM_DESSGEEGA_KILLED 0x2B
#define EVENT_THREE_HIVES_DESTROYED 0x2C
#define EVENT_BUGS_KILLED 0x2D
#define EVENT_ZIPLINES_ACTIVATED 0x2E

View File

@ -2,82 +2,969 @@
#include "../../data/data.h"
#include "../globals.h"
const i16 sBaristuteFallingYVelocity[8] = {
0x4, 0x8, 0xC, 0x10, 0x14, 0x18, 0x1C, SPRITE_ARRAY_TERMINATOR
};
const i16 sBaristuteJumpingYVelocity[10] = {
-0xC, -0x10, -0x10, -0x8, -0x4, 0x0, 0xC, 0x12, 0x18, 0x20
};
const u8 sBaristuteGFX[2384];
const u16 sBaristutePAL[80];
const u16 sBaristuteOAM_Idle_Frame0[49] = {
0x10,
OBJ_SHAPE_VERTICAL | 0xd8, OBJ_SIZE_16x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200,
OBJ_SHAPE_VERTICAL | 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x0, OBJ_SPRITE_OAM | 0x200,
0xef, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x212,
0xef, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x212,
OBJ_SHAPE_VERTICAL | 0xe7, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0xb, OBJ_SPRITE_OAM | 0x247,
0xd9, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xb, OBJ_SPRITE_OAM | 0x207,
0xdd, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x202,
0xf7, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x10, OBJ_SPRITE_OAM | 0x21c,
0xf5, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x13, OBJ_SPRITE_OAM | 0x21c,
0xf5, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x7, OBJ_SPRITE_OAM | 0x21e,
OBJ_SHAPE_VERTICAL | 0xe7, OBJ_SIZE_16x32 | 0x1e5, OBJ_SPRITE_OAM | 0x247,
0xd9, OBJ_SIZE_16x16 | 0x1e5, OBJ_SPRITE_OAM | 0x207,
0xdd, OBJ_SIZE_16x16 | 0x1ef, OBJ_SPRITE_OAM | 0x202,
0xf7, OBJ_SIZE_16x16 | 0x1e0, OBJ_SPRITE_OAM | 0x21c,
0xf5, OBJ_SIZE_16x16 | 0x1dd, OBJ_SPRITE_OAM | 0x21c,
0xf5, OBJ_SIZE_16x16 | 0x1e9, OBJ_SPRITE_OAM | 0x21e
};
const u16 sBaristuteOAM_Walking_Frame1[52] = {
0x11,
OBJ_SHAPE_VERTICAL | 0xe0, OBJ_SIZE_16x32 | 0x1e2, OBJ_SPRITE_OAM | 0x20c,
0xd7, OBJ_SIZE_16x16 | 0x1e5, OBJ_SPRITE_OAM | 0x207,
OBJ_SHAPE_VERTICAL | 0xd7, OBJ_SIZE_16x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200,
OBJ_SHAPE_VERTICAL | 0xd7, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x0, OBJ_SPRITE_OAM | 0x200,
0xee, 0x1fc, OBJ_SPRITE_OAM | 0x25a,
0xed, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x252,
0xed, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x252,
0xf6, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x10, OBJ_SPRITE_OAM | 0x21c,
0xf4, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x13, OBJ_SPRITE_OAM | 0x21c,
0xf4, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x7, OBJ_SPRITE_OAM | 0x21e,
0xda, OBJ_SIZE_16x16 | 0x1ef, OBJ_SPRITE_OAM | 0x202,
OBJ_SHAPE_VERTICAL | 0xe6, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0xb, OBJ_SPRITE_OAM | 0x247,
0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xb, OBJ_SPRITE_OAM | 0x207,
0xdc, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x202,
0xf2, OBJ_SIZE_16x16 | 0x1dd, OBJ_SPRITE_OAM | 0x21c,
0xf1, OBJ_SIZE_16x16 | 0x1da, OBJ_SPRITE_OAM | 0x21a,
0xf1, OBJ_SIZE_16x16 | 0x1e5, OBJ_SPRITE_OAM | 0x21
};
const u16 sBaristuteOAM_Walking_Frame2[52] = {
0x11,
OBJ_SHAPE_VERTICAL | 0xd6, OBJ_SIZE_16x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200,
OBJ_SHAPE_VERTICAL | 0xd6, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x0, OBJ_SPRITE_OAM | 0x200,
0xec, 0x1fc, OBJ_SPRITE_OAM | 0x25b,
0xec, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x292,
0xec, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x292,
0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xb, OBJ_SPRITE_OAM | 0x207,
OBJ_SHAPE_VERTICAL | 0xe6, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0xc, OBJ_SPRITE_OAM | 0x247,
0xdb, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x202,
0xf5, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x10, OBJ_SPRITE_OAM | 0x21c,
0xf2, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x14, OBJ_SPRITE_OAM | 0x21c,
0xf3, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x7, OBJ_SPRITE_OAM | 0x21e,
0xd3, OBJ_SIZE_16x16 | 0x1e5, OBJ_SPRITE_OAM | 0x207,
OBJ_SHAPE_VERTICAL | 0xdb, OBJ_SIZE_16x32 | 0x1e1, OBJ_SPRITE_OAM | 0x20a,
0xd8, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x202,
0xec, OBJ_SIZE_16x16 | 0x1db, OBJ_SPRITE_OAM | 0x21c,
0xea, OBJ_SIZE_16x16 | 0x1d7, OBJ_SPRITE_OAM | 0x21a,
0xeb, OBJ_SIZE_16x16 | 0x1e5, OBJ_SPRITE_OAM | 0x21e
};
const u16 sBaristuteOAM_Walking_Frame3[52] = {
0x11,
OBJ_SHAPE_VERTICAL | 0xd9, OBJ_SIZE_16x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200,
OBJ_SHAPE_VERTICAL | 0xd9, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x0, OBJ_SPRITE_OAM | 0x200,
0xf3, 0x1fc, OBJ_SPRITE_OAM | 0x25b,
0xf1, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x292,
0xf1, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x292,
OBJ_SHAPE_VERTICAL | 0xe4, OBJ_SIZE_16x32 | 0x1e3, OBJ_SPRITE_OAM | 0x20c,
0xda, OBJ_SIZE_16x16 | 0x1e5, OBJ_SPRITE_OAM | 0x207,
0xdf, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x202,
OBJ_SHAPE_VERTICAL | 0xe3, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0xf, OBJ_SPRITE_OAM | 0x20c,
0xda, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xc, OBJ_SPRITE_OAM | 0x207,
0xdf, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x202,
0xf7, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x12, OBJ_SPRITE_OAM | 0x21c,
0xf5, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x15, OBJ_SPRITE_OAM | 0x21c,
0xf5, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x9, OBJ_SPRITE_OAM | 0x21e,
0xf8, OBJ_SIZE_16x16 | 0x1df, OBJ_SPRITE_OAM | 0x21c,
0xf6, OBJ_SIZE_16x16 | 0x1db, OBJ_SPRITE_OAM | 0x21c,
0xf6, OBJ_SIZE_16x16 | 0x1e8, OBJ_SPRITE_OAM | 0x21e
};
const u16 sBaristuteOAM_Walking_Frame4[52] = {
0x11,
OBJ_SHAPE_VERTICAL | 0xd7, OBJ_SIZE_16x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200,
OBJ_SHAPE_VERTICAL | 0xd7, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x0, OBJ_SPRITE_OAM | 0x200,
0xf0, 0x1fc, OBJ_SPRITE_OAM | 0x25a,
0xef, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x252,
0xef, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x252,
0xd7, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xc, OBJ_SPRITE_OAM | 0x207,
0xdc, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x202,
OBJ_SHAPE_VERTICAL | 0xe3, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0xd, OBJ_SPRITE_OAM | 0x247,
0xf2, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x11, OBJ_SPRITE_OAM | 0x21c,
0xef, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x15, OBJ_SPRITE_OAM | 0x21c,
0xf0, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x8, OBJ_SPRITE_OAM | 0x21e,
OBJ_SHAPE_VERTICAL | 0xe3, OBJ_SIZE_16x32 | 0x1e3, OBJ_SPRITE_OAM | 0x20c,
0xd9, OBJ_SIZE_16x16 | 0x1e5, OBJ_SPRITE_OAM | 0x207,
0xdd, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x202,
0xf6, OBJ_SIZE_16x16 | 0x1e0, OBJ_SPRITE_OAM | 0x21c,
0xf3, OBJ_SIZE_16x16 | 0x1dc, OBJ_SPRITE_OAM | 0x21c,
0xf4, OBJ_SIZE_16x16 | 0x1e8, OBJ_SPRITE_OAM | 0x21e
};
const u16 sBaristuteOAM_Walking_Frame5[49] = {
0x10,
OBJ_SHAPE_VERTICAL | 0xd6, OBJ_SIZE_16x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200,
OBJ_SHAPE_VERTICAL | 0xd6, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x0, OBJ_SPRITE_OAM | 0x200,
0xee, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x212,
0xee, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x212,
0xd4, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xd, OBJ_SPRITE_OAM | 0x207,
OBJ_SHAPE_VERTICAL | 0xdc, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0xd, OBJ_SPRITE_OAM | 0x204,
0xda, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x202,
0xef, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x10, OBJ_SPRITE_OAM | 0x25c,
0xec, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x14, OBJ_SPRITE_OAM | 0x25c,
0xed, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x8, OBJ_SPRITE_OAM | 0x25e,
OBJ_SHAPE_VERTICAL | 0xe1, OBJ_SIZE_16x32 | 0x1e5, OBJ_SPRITE_OAM | 0x204,
0xd7, OBJ_SIZE_16x16 | 0x1e4, OBJ_SPRITE_OAM | 0x207,
0xdc, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x202,
0xf5, OBJ_SIZE_16x16 | 0x1e2, OBJ_SPRITE_OAM | 0x21c,
0xf3, OBJ_SIZE_16x16 | 0x1df, OBJ_SPRITE_OAM | 0x21c,
0xf3, OBJ_SIZE_16x16 | 0x1eb, OBJ_SPRITE_OAM | 0x21e
};
const u16 sBaristuteOAM_Warning_Frame1[55] = {
0x12,
0xe6, 0x1fc, OBJ_SPRITE_OAM | 0x25a,
OBJ_SHAPE_VERTICAL | 0xd8, OBJ_SIZE_16x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200,
OBJ_SHAPE_VERTICAL | 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x0, OBJ_SPRITE_OAM | 0x200,
0xf0, 0x1fc, OBJ_SPRITE_OAM | 0x25a,
0xee, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x212,
0xee, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x212,
OBJ_SHAPE_VERTICAL | 0xe7, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0xc, OBJ_SPRITE_OAM | 0x247,
0xda, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xb, OBJ_SPRITE_OAM | 0x207,
0xdd, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x202,
0xf5, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x10, OBJ_SPRITE_OAM | 0x21c,
0xf4, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x14, OBJ_SPRITE_OAM | 0x21a,
0xf3, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x7, OBJ_SPRITE_OAM | 0x21e,
OBJ_SHAPE_VERTICAL | 0xe7, OBJ_SIZE_16x32 | 0x1e4, OBJ_SPRITE_OAM | 0x247,
0xda, OBJ_SIZE_16x16 | 0x1e5, OBJ_SPRITE_OAM | 0x207,
0xdd, OBJ_SIZE_16x16 | 0x1ef, OBJ_SPRITE_OAM | 0x202,
0xf5, OBJ_SIZE_16x16 | 0x1e0, OBJ_SPRITE_OAM | 0x21c,
0xf5, OBJ_SIZE_16x16 | 0x1dc, OBJ_SPRITE_OAM | 0x21a,
0xf3, OBJ_SIZE_16x16 | 0x1e9, OBJ_SPRITE_OAM | 0x21e
};
const u16 sBaristuteOAM_Warning_Frame2[55] = {
0x12,
0xe9, 0x1fc, OBJ_SPRITE_OAM | 0x25b,
OBJ_SHAPE_VERTICAL | 0xdd, OBJ_SIZE_16x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200,
OBJ_SHAPE_VERTICAL | 0xdd, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x0, OBJ_SPRITE_OAM | 0x200,
0xf3, 0x1fc, OBJ_SPRITE_OAM | 0x25b,
0xf1, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x212,
0xf1, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x212,
0xdd, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xa, OBJ_SPRITE_OAM | 0x207,
OBJ_SHAPE_VERTICAL | 0xe4, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0xc, OBJ_SPRITE_OAM | 0x204,
0xe1, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x202,
0xf7, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x10, OBJ_SPRITE_OAM | 0x21c,
0xf6, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x15, OBJ_SPRITE_OAM | 0x21a,
0xf6, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x6, OBJ_SPRITE_OAM | 0x21e,
0xde, OBJ_SIZE_16x16 | 0x1e6, OBJ_SPRITE_OAM | 0x207,
OBJ_SHAPE_VERTICAL | 0xe5, OBJ_SIZE_16x32 | 0x1e3, OBJ_SPRITE_OAM | 0x204,
0xe1, OBJ_SIZE_16x16 | 0x1ef, OBJ_SPRITE_OAM | 0x202,
0xf7, OBJ_SIZE_16x16 | 0x1e0, OBJ_SPRITE_OAM | 0x21c,
0xf7, OBJ_SIZE_16x16 | 0x1db, OBJ_SPRITE_OAM | 0x21a,
0xf6, OBJ_SIZE_16x16 | 0x1ea, OBJ_SPRITE_OAM | 0x21e
};
const u16 sBaristuteOAM_Jumping_Frame0[49] = {
0x10,
OBJ_SHAPE_VERTICAL | 0xd2, OBJ_SIZE_16x32 | 0x1e5, OBJ_SPRITE_OAM | 0x207,
OBJ_SHAPE_VERTICAL | 0xd2, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0xb, OBJ_SPRITE_OAM | 0x207,
OBJ_SHAPE_VERTICAL | 0xd0, OBJ_SIZE_16x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200,
OBJ_SHAPE_VERTICAL | 0xd0, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x0, OBJ_SPRITE_OAM | 0x200,
0xf2, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xc, OBJ_SPRITE_OAM | 0x287,
0xf1, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x11, OBJ_SPRITE_OAM | 0x25c,
0xf1, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x14, OBJ_SPRITE_OAM | 0x29c,
0xf0, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x8, OBJ_SPRITE_OAM | 0x25e,
0xf2, OBJ_SIZE_16x16 | 0x1e4, OBJ_SPRITE_OAM | 0x287,
0xf1, OBJ_SIZE_16x16 | 0x1df, OBJ_SPRITE_OAM | 0x25c,
0xf1, OBJ_SIZE_16x16 | 0x1dc, OBJ_SPRITE_OAM | 0x29c,
0xf0, OBJ_SIZE_16x16 | 0x1e8, OBJ_SPRITE_OAM | 0x25e,
0xda, OBJ_SIZE_16x16 | 0x1f1, OBJ_SPRITE_OAM | 0x202,
0xda, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x1ff, OBJ_SPRITE_OAM | 0x202,
0xe4, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x292,
0xe4, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x292
};
const u16 sBaristuteOAM_Jumping_Frame1[49] = {
0x10,
OBJ_SHAPE_VERTICAL | 0xd0, OBJ_SIZE_16x32 | 0x1e5, OBJ_SPRITE_OAM | 0x207,
OBJ_SHAPE_VERTICAL | 0xd0, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0xb, OBJ_SPRITE_OAM | 0x207,
OBJ_SHAPE_VERTICAL | 0xce, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x0, OBJ_SPRITE_OAM | 0x200,
OBJ_SHAPE_VERTICAL | 0xce, OBJ_SIZE_16x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200,
0xf0, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xc, OBJ_SPRITE_OAM | 0x287,
0xef, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x11, OBJ_SPRITE_OAM | 0x25c,
0xef, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x14, OBJ_SPRITE_OAM | 0x29c,
0xee, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x8, OBJ_SPRITE_OAM | 0x25e,
0xf0, OBJ_SIZE_16x16 | 0x1e4, OBJ_SPRITE_OAM | 0x287,
0xef, OBJ_SIZE_16x16 | 0x1df, OBJ_SPRITE_OAM | 0x25c,
0xef, OBJ_SIZE_16x16 | 0x1dc, OBJ_SPRITE_OAM | 0x29c,
0xee, OBJ_SIZE_16x16 | 0x1e8, OBJ_SPRITE_OAM | 0x25e,
0xd8, OBJ_SIZE_16x16 | 0x1f1, OBJ_SPRITE_OAM | 0x202,
0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x1ff, OBJ_SPRITE_OAM | 0x202,
0xe3, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x292,
0xe3, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x292
};
const u16 sBaristuteOAM_Idle_Frame2[61] = {
0x14,
0xe8, 0x1fc, OBJ_SPRITE_OAM | 0x25b,
OBJ_SHAPE_VERTICAL | 0xda, OBJ_SIZE_16x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200,
OBJ_SHAPE_VERTICAL | 0xda, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x0, OBJ_SPRITE_OAM | 0x200,
0xef, 0x1fc, OBJ_SPRITE_OAM | 0x25b,
0xef, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x292,
0xef, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x292,
0xda, OBJ_SIZE_16x16 | 0x1e5, OBJ_SPRITE_OAM | 0x207,
0xe8, OBJ_SIZE_16x16 | 0x1e6, OBJ_SPRITE_OAM | 0x247,
0xf8, OBJ_SIZE_16x16 | 0x1e6, OBJ_SPRITE_OAM | 0x287,
0xf8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xa, OBJ_SPRITE_OAM | 0x287,
0xe1, OBJ_SIZE_16x16 | 0x1f2, OBJ_SPRITE_OAM | 0x202,
0xf6, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xf, OBJ_SPRITE_OAM | 0x21c,
0xf6, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x12, OBJ_SPRITE_OAM | 0x21c,
0xf5, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x6, OBJ_SPRITE_OAM | 0x21e,
0xda, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xb, OBJ_SPRITE_OAM | 0x207,
0xe8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xa, OBJ_SPRITE_OAM | 0x247,
0xe1, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x1fe, OBJ_SPRITE_OAM | 0x202,
0xf6, OBJ_SIZE_16x16 | 0x1e1, OBJ_SPRITE_OAM | 0x21c,
0xf6, OBJ_SIZE_16x16 | 0x1de, OBJ_SPRITE_OAM | 0x21c,
0xf5, OBJ_SIZE_16x16 | 0x1ea, OBJ_SPRITE_OAM | 0x21e
};
const u16 sBaristuteOAM_Idle_Frame1[55] = {
0x12,
0xe7, 0x1fc, OBJ_SPRITE_OAM | 0x25a,
OBJ_SHAPE_VERTICAL | 0xd9, OBJ_SIZE_16x32 | 0x1f0, OBJ_SPRITE_OAM | 0x200,
OBJ_SHAPE_VERTICAL | 0xd9, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x0, OBJ_SPRITE_OAM | 0x200,
0xf0, 0x1fc, OBJ_SPRITE_OAM | 0x25a,
0xef, OBJ_SIZE_16x16 | 0x1f0, OBJ_SPRITE_OAM | 0x252,
0xef, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x0, OBJ_SPRITE_OAM | 0x252,
0xd9, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0xb, OBJ_SPRITE_OAM | 0x207,
OBJ_SHAPE_VERTICAL | 0xe7, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0xb, OBJ_SPRITE_OAM | 0x247,
0xdf, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x1ff, OBJ_SPRITE_OAM | 0x202,
0xf6, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x10, OBJ_SPRITE_OAM | 0x21c,
0xf5, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x13, OBJ_SPRITE_OAM | 0x21c,
0xf4, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x7, OBJ_SPRITE_OAM | 0x21e,
0xd9, OBJ_SIZE_16x16 | 0x1e5, OBJ_SPRITE_OAM | 0x207,
OBJ_SHAPE_VERTICAL | 0xe7, OBJ_SIZE_16x32 | 0x1e5, OBJ_SPRITE_OAM | 0x247,
0xdf, OBJ_SIZE_16x16 | 0x1f1, OBJ_SPRITE_OAM | 0x202,
0xf6, OBJ_SIZE_16x16 | 0x1e0, OBJ_SPRITE_OAM | 0x21c,
0xf5, OBJ_SIZE_16x16 | 0x1dd, OBJ_SPRITE_OAM | 0x21c,
0xf4, OBJ_SIZE_16x16 | 0x1e9, OBJ_SPRITE_OAM | 0x21e
};
const struct FrameData sBaristuteOAM_Idle[5] = {
sBaristuteOAM_Idle_Frame0,
0x10,
sBaristuteOAM_Idle_Frame1,
0x6,
sBaristuteOAM_Idle_Frame2,
0x10,
sBaristuteOAM_Idle_Frame1,
0x6,
NULL,
0x0
};
const struct FrameData sBaristuteOAM_Warning[4] = {
sBaristuteOAM_Idle_Frame0,
0x6,
sBaristuteOAM_Warning_Frame1,
0x8,
sBaristuteOAM_Warning_Frame2,
0x10,
NULL,
0x0
};
const struct FrameData sBaristuteOAM_Jumping[3] = {
sBaristuteOAM_Jumping_Frame0,
0x2,
sBaristuteOAM_Jumping_Frame1,
0x2,
NULL,
0x0
};
const struct FrameData sBaristuteOAM_Landing[4] = {
sBaristuteOAM_Idle_Frame0,
0x6,
sBaristuteOAM_Warning_Frame2,
0x8,
sBaristuteOAM_Warning_Frame1,
0xC,
NULL,
0x0
};
const struct FrameData sBaristuteOAM_WalkingSlow[7] = {
sBaristuteOAM_Idle_Frame0,
0x8,
sBaristuteOAM_Walking_Frame1,
0x8,
sBaristuteOAM_Walking_Frame2,
0x8,
sBaristuteOAM_Walking_Frame3,
0x8,
sBaristuteOAM_Walking_Frame4,
0x8,
sBaristuteOAM_Walking_Frame5,
0x8,
NULL,
0x0
};
const struct FrameData sBaristuteOAM_WalkingFast[7] = {
sBaristuteOAM_Idle_Frame0,
0x5,
sBaristuteOAM_Walking_Frame1,
0x5,
sBaristuteOAM_Walking_Frame2,
0x5,
sBaristuteOAM_Walking_Frame3,
0x5,
sBaristuteOAM_Walking_Frame4,
0x5,
sBaristuteOAM_Walking_Frame5,
0x5,
NULL,
0x0
};
const struct FrameData sBaristuteOAM_WalkingVeryFast[7] = {
sBaristuteOAM_Idle_Frame0,
0x3,
sBaristuteOAM_Walking_Frame1,
0x3,
sBaristuteOAM_Walking_Frame2,
0x3,
sBaristuteOAM_Walking_Frame3,
0x3,
sBaristuteOAM_Walking_Frame4,
0x3,
sBaristuteOAM_Walking_Frame5,
0x3,
NULL,
0x0
};
const struct FrameData sBaristuteOAM_WalkingExtremelyFast[7] = {
sBaristuteOAM_Idle_Frame0,
0x2,
sBaristuteOAM_Walking_Frame1,
0x2,
sBaristuteOAM_Walking_Frame2,
0x2,
sBaristuteOAM_Walking_Frame3,
0x2,
sBaristuteOAM_Walking_Frame4,
0x2,
sBaristuteOAM_Walking_Frame5,
0x2,
NULL,
0x0
};
/**
* @brief 47600 | 20 | Checks if samus is near the baristute (8 blocks range on each side)
*
* @return u8 1 if near, 0 otherwise
*/
u8 BaristuteCheckSamusInRange(void)
{
if (SpriteUtilCheckSamusNearSpriteLeftRight(BLOCK_SIZE * 8, BLOCK_SIZE * 8) != NSLR_OUT_OF_RANGE)
{
SpriteUtilMakeSpriteFaceSamusDirection();
return TRUE;
}
return FALSE;
}
/**
* @brief 47620 | 90 | Initializes a baristute sprite
*
*/
void BaristuteInit(void)
{
// Check for kraid baristutes
if (gCurrentSprite.spriteID == PSPRITE_BARISTUTE_KRAID_UPPER || gCurrentSprite.spriteID == PSPRITE_BARISTUTE_KRAID_LOWER)
{
if (EventFunction(EVENT_ACTION_CHECKING, EVENT_KRAID_BARISTUTES_KILLED))
{
// Kill if already dead
gCurrentSprite.status = 0x0;
return;
}
gDoorUnlockTimer = 0x1; // Lock doors
}
gCurrentSprite.pose = BARISTUTE_POSE_IDLE_INIT;
gCurrentSprite.pOam = sBaristuteOAM_Idle;
gCurrentSprite.animationDurationCounter = 0x0;
gCurrentSprite.currentAnimationFrame = 0x0;
gCurrentSprite.drawDistanceTopOffset = 0x30;
gCurrentSprite.drawDistanceBottomOffset = 0x8;
gCurrentSprite.drawDistanceHorizontalOffset = 0x28;
gCurrentSprite.hitboxTopOffset = -0xA0;
gCurrentSprite.hitboxBottomOffset = 0x0;
gCurrentSprite.hitboxLeftOffset = -0x54;
gCurrentSprite.hitboxRightOffset = 0x54;
gCurrentSprite.samusCollision = SSC_HURTS_SAMUS;
gCurrentSprite.health = sSecondarySpriteStats[gCurrentSprite.spriteID][0x0];
SpriteUtilMakeSpriteFaceSamusDirection();
}
void BaristuteJumpingGFXInit(void)
/**
* @brief 476b0 | 34 | Initializes a baristute to do the warning before a jump
*
*/
void BaristuteJumpWarningInit(void)
{
gCurrentSprite.pose = BARISTUTE_POSE_CHECK_WARNING_ENDED;
gCurrentSprite.animationDurationCounter = 0x0;
gCurrentSprite.currentAnimationFrame = 0x0;
gCurrentSprite.pOam = sBaristuteOAM_Warning;
if (gCurrentSprite.status & SPRITE_STATUS_ONSCREEN)
SoundPlayNotAlreadyPlaying(0x18C);
}
/**
* @brief 476e4 | 7c | Checks if the animation before jumping has ended
*
*/
void BaristuteCheckBeforeJumpingAnimEnded(void)
{
u16 yPosition;
u16 xPosition;
yPosition = gCurrentSprite.yPosition;
xPosition = gCurrentSprite.xPosition;
// Check if there's still ground under the baristute
if (SpriteUtilGetCollisionAtPosition(yPosition, xPosition + gCurrentSprite.hitboxRightOffset) == COLLISION_AIR
&& SpriteUtilGetCollisionAtPosition(yPosition, xPosition + gCurrentSprite.hitboxLeftOffset) == COLLISION_AIR)
{
gCurrentSprite.pose = BARISTUTE_POSE_FALLING_INIT; // Set falling
}
else
{
if (SpriteUtilCheckEndCurrentSpriteAnim())
{
// Set jumping behavior
gCurrentSprite.pose = BARISTUTE_POSE_JUMPING;
gCurrentSprite.animationDurationCounter = 0x0;
gCurrentSprite.currentAnimationFrame = 0x0;
gCurrentSprite.arrayOffset = 0x0;
gCurrentSprite.pOam = sBaristuteOAM_Jumping;
if (gCurrentSprite.status & SPRITE_STATUS_ONSCREEN)
SoundPlayNotAlreadyPlaying(0x18D);
}
}
}
/**
* @brief 47760 | 100 | Handles the baristute jumping
*
*/
void BaristuteJumping(void)
{
i32 movement;
u32 topEdge;
movement = sBaristuteJumpingYVelocity[gCurrentSprite.arrayOffset / 4];
if (gCurrentSprite.status & SPRITE_STATUS_FACING_RIGHT)
{
// Check wall on right
SpriteUtilCheckCollisionAtPosition(gCurrentSprite.yPosition - 0x10, gCurrentSprite.xPosition + gCurrentSprite.hitboxRightOffset + 0x4);
if (gPreviousCollisionCheck == COLLISION_SOLID)
{
gCurrentSprite.xPosition -= 0xA;
gCurrentSprite.status &= ~SPRITE_STATUS_FACING_RIGHT;
gCurrentSprite.pose = BARISTUTE_POSE_FALLING_INIT;
return;
}
gCurrentSprite.xPosition += 0xA;
}
else
{
// Check wall on left
SpriteUtilCheckCollisionAtPosition(gCurrentSprite.yPosition - 0x10, gCurrentSprite.xPosition + gCurrentSprite.hitboxLeftOffset - 0x4);
if (gPreviousCollisionCheck == COLLISION_SOLID)
{
gCurrentSprite.xPosition += 0xA;
gCurrentSprite.status |= SPRITE_STATUS_FACING_RIGHT;
gCurrentSprite.pose = BARISTUTE_POSE_FALLING_INIT;
return;
}
gCurrentSprite.xPosition -= 0xA;
}
// Apply y movement
gCurrentSprite.yPosition += movement;
// Check update array offset
if (gCurrentSprite.arrayOffset < 0x27)
gCurrentSprite.arrayOffset++;
if (movement >= 0x1)
{
// Check landing if velocity is positive
topEdge = SpriteUtilCheckVerticalCollisionAtPositionSlopes(gCurrentSprite.yPosition, gCurrentSprite.xPosition);
if (gPreviousVerticalCollisionCheck != COLLISION_AIR)
{
gCurrentSprite.yPosition = topEdge;
gCurrentSprite.pose = BARISTUTE_POSE_LANDING_INIT;
}
}
else
{
// Check for ceiling if velocity is negative
SpriteUtilCheckCollisionAtPosition(gCurrentSprite.yPosition + gCurrentSprite.hitboxTopOffset, gCurrentSprite.xPosition);
if (gPreviousCollisionCheck == COLLISION_SOLID)
gCurrentSprite.pose = BARISTUTE_POSE_FALLING_INIT;
}
}
void BaristuteLandingGFXInit(void)
/**
* @brief 47860 | 3c | Initializes a baristute to be landing
*
*/
void BaristuteLandingInit(void)
{
gCurrentSprite.pose = BARISTUTE_POSE_LANDING;
gCurrentSprite.animationDurationCounter = 0x0;
gCurrentSprite.currentAnimationFrame = 0x0;
gCurrentSprite.pOam = sBaristuteOAM_Landing;
if (gCurrentSprite.status & SPRITE_STATUS_ONSCREEN)
{
ScreenShakeStartVertical(0xA, 0x81);
SoundPlayNotAlreadyPlaying(0x18E);
}
}
/**
* @brief 4789c | 1c | Checks if the landing animation has nearly ended
*
*/
void BaristuteCheckLandingAnimNearEnded(void)
{
if (SpriteUtilCheckNearEndCurrentSpriteAnim())
gCurrentSprite.pose = BARISTUTE_POSE_IDLE_INIT; // Set idle
}
void BaristuteGFXInit(void)
/**
* @brief 478b8 | 30 | Initializes a baristute to be idle
*
*/
void BaristuteIdleInit(void)
{
gCurrentSprite.pose = BARISTUTE_POSE_IDLE;
gCurrentSprite.pOam = sBaristuteOAM_Idle;
gCurrentSprite.animationDurationCounter = 0x0;
gCurrentSprite.currentAnimationFrame = 0x0;
gCurrentSprite.workVariable = gSpriteRNG & 0x3;
}
/**
* @brief 478e8 | cc | Handles a baristute being idle
*
*/
void BaristuteIdle(void)
{
// https://decomp.me/scratch/bFiH7
u16 yPosition;
u32 xPosition;
u32 collision;
yPosition = gCurrentSprite.yPosition;
xPosition = gCurrentSprite.xPosition;
if (SpriteUtilGetCollisionAtPosition(yPosition, xPosition + gCurrentSprite.hitboxRightOffset) == COLLISION_AIR
&& SpriteUtilGetCollisionAtPosition(yPosition, xPosition + gCurrentSprite.hitboxLeftOffset) == COLLISION_AIR)
{
gCurrentSprite.pose = BARISTUTE_POSE_FALLING_INIT;
}
else
{
if (SpriteUtilCheckNearEndCurrentSpriteAnim())
{
SpriteUtilMakeSpriteFaceSamusDirection();
if (gCurrentSprite.status & SPRITE_STATUS_FACING_RIGHT)
gCurrentSprite.status |= SPRITE_STATUS_XFLIP;
else
gCurrentSprite.status &= ~SPRITE_STATUS_XFLIP;
// /!\ Not fully merged calls
if (gCurrentSprite.status & SPRITE_STATUS_FACING_RIGHT)
collision = SpriteUtilGetCollisionAtPosition(yPosition - 0x10, xPosition + gCurrentSprite.hitboxRightOffset + 0x10);
else
collision = SpriteUtilGetCollisionAtPosition(yPosition - 0x10, xPosition + gCurrentSprite.hitboxLeftOffset - 0x10);
if (collision == COLLISION_AIR)
{
if (gCurrentSprite.spriteID == PSPRITE_BARISTUTE_KRAID_UPPER)
gCurrentSprite.pose = BARISTUTE_POSE_WALKING_INIT;
else if (gCurrentSprite.spriteID != PSPRITE_BARISTUTE_KRAID_LOWER)
{
if (gCurrentSprite.workVariable > 0x1)
gCurrentSprite.pose = BARISTUTE_POSE_WALKING_INIT;
else
gCurrentSprite.pose = BARISTUTE_POSE_JUMP_WARNING_INIT;
}
else
gCurrentSprite.pose = BARISTUTE_POSE_JUMP_WARNING_INIT;
}
}
}
}
void BaristuteWalkingGFXInit(void)
/**
* @brief 479b4 | 74 | Initializes a baristute to be walking
*
*/
void BaristuteWalkingInit(void)
{
u8 paletteRow;
gCurrentSprite.pose = BARISTUTE_POSE_WALKING;
gCurrentSprite.animationDurationCounter = 0x0;
gCurrentSprite.currentAnimationFrame = 0x0;
gCurrentSprite.xPositionSpawn = gCurrentSprite.xPosition;
paletteRow = gCurrentSprite.absolutePaletteRow;
// Set OAM and walking speed based on palette row (affected by health)
if (paletteRow == 0x1)
{
gCurrentSprite.pOam = sBaristuteOAM_WalkingFast;
gCurrentSprite.workVariable2 = 0x6;
}
else if (paletteRow == 0x2)
{
gCurrentSprite.pOam = sBaristuteOAM_WalkingVeryFast;
gCurrentSprite.workVariable2 = 0x8;
}
else if (paletteRow == 0x3)
{
gCurrentSprite.pOam = sBaristuteOAM_WalkingExtremelyFast;
gCurrentSprite.workVariable2 = 0xA;
}
else
{
gCurrentSprite.pOam = sBaristuteOAM_WalkingSlow;
gCurrentSprite.workVariable2 = 0x3;
}
}
/**
* @brief 47a28 | 50 | Checks if the walking sound should play, if yes plays it
*
*/
void BaristutePlayWalkingSound(void)
{
if (gCurrentSprite.animationDurationCounter == 0x1 &&
(gCurrentSprite.currentAnimationFrame == 0x1 || gCurrentSprite.currentAnimationFrame == 0x4))
{
if (gCurrentSprite.workVariable2 < 0x7) // Slow or fast
{
if (gCurrentSprite.status & SPRITE_STATUS_ONSCREEN)
SoundPlayNotAlreadyPlaying(0x18F);
}
else // Very fast or extremely fast
{
if (gCurrentSprite.status & SPRITE_STATUS_ONSCREEN)
SoundPlayNotAlreadyPlaying(0x258);
}
}
}
/**
* @brief 47a78 | d4 | Handles a baristute walking
*
*/
void BaristuteWalking(void)
{
u8 velocity;
u16 walkingDistance;
velocity = gCurrentSprite.workVariable2;
// Determined by RNG
walkingDistance = BLOCK_SIZE * 6;
if (gCurrentSprite.workVariable == 0x3)
walkingDistance *= 2;
if (gCurrentSprite.status & SPRITE_STATUS_FACING_RIGHT)
{
// Check collision
if (SpriteUtilGetCollisionAtPosition(gCurrentSprite.yPosition - 0x10, gCurrentSprite.xPosition + gCurrentSprite.hitboxRightOffset + 0x4) == COLLISION_AIR
&& SpriteUtilGetCollisionAtPosition(gCurrentSprite.yPosition, gCurrentSprite.xPosition + gCurrentSprite.hitboxRightOffset + 0x4) == COLLISION_SOLID)
{
if ((u16)(gCurrentSprite.xPosition - gCurrentSprite.xPositionSpawn) > walkingDistance)
gCurrentSprite.pose = BARISTUTE_POSE_IDLE_INIT; // Walking distance reached, set idle
else
{
// Walk
gCurrentSprite.xPosition += velocity;
BaristutePlayWalkingSound();
}
}
else
{
// Encountered wall, go back and set idle
gCurrentSprite.xPosition -= velocity;
gCurrentSprite.pose = BARISTUTE_POSE_IDLE_INIT;
}
}
else
{
// Check collision
if (SpriteUtilGetCollisionAtPosition(gCurrentSprite.yPosition - 0x10, gCurrentSprite.xPosition + gCurrentSprite.hitboxLeftOffset - 0x4) == COLLISION_AIR
&& SpriteUtilGetCollisionAtPosition(gCurrentSprite.yPosition, gCurrentSprite.xPosition + gCurrentSprite.hitboxLeftOffset - 0x4) == COLLISION_SOLID)
{
if ((u16)(gCurrentSprite.xPositionSpawn - gCurrentSprite.xPosition) > walkingDistance)
gCurrentSprite.pose = BARISTUTE_POSE_IDLE_INIT; // Walking distance reached, set idle
else
{
// Walk
gCurrentSprite.xPosition -= velocity;
BaristutePlayWalkingSound();
}
}
else
{
// Encountered wall, go back and set idle
gCurrentSprite.xPosition += velocity;
gCurrentSprite.pose = BARISTUTE_POSE_IDLE_INIT;
}
}
}
void BaristuteBouncingGFXInit(void)
/**
* @brief 47b4c | 24 | Initializes a baristute to bve falling
*
*/
void BaristuteFallingInit(void)
{
gCurrentSprite.pose = BARISTUTE_POSE_FALLING;
gCurrentSprite.animationDurationCounter = 0x0;
gCurrentSprite.currentAnimationFrame = 0x0;
gCurrentSprite.arrayOffset = 0x0;
gCurrentSprite.pOam = sBaristuteOAM_Jumping;
}
void BaristuteBouncing(void)
/**
* @brief 47b70 | 70 | Handles a baristute falling
*
*/
void BaristuteFalling(void)
{
u32 topEdge;
i32 velocity;
u8 offset;
topEdge = SpriteUtilCheckVerticalCollisionAtPositionSlopes(gCurrentSprite.yPosition, gCurrentSprite.xPosition);
if (gPreviousVerticalCollisionCheck != COLLISION_AIR)
{
// Touching ground
gCurrentSprite.yPosition = topEdge;
gCurrentSprite.pose = BARISTUTE_POSE_LANDING_INIT;
}
else
{
// Update Y position
offset = gCurrentSprite.arrayOffset;
velocity = sBaristuteFallingYVelocity[offset];
if (velocity == SPRITE_ARRAY_TERMINATOR)
{
// Reached end of array, use last velocity
velocity = sBaristuteFallingYVelocity[offset - 1];
gCurrentSprite.yPosition += velocity;
}
else
{
gCurrentSprite.arrayOffset = offset + 1;
gCurrentSprite.yPosition += velocity;
}
}
}
/**
* @brief 47be0 | 150 | Handles a baristute death
*
*/
void BaristuteDeath(void)
{
u8 spriteID;
struct SpriteData* pSprite;
u8 count;
u16 yPosition;
u16 xPosition;
u8 rng;
// Check for the second baristute in Kraid
// Get sprite ID
spriteID = 0x0;
if (gCurrentSprite.spriteID == PSPRITE_BARISTUTE_KRAID_UPPER)
spriteID = PSPRITE_BARISTUTE_KRAID_LOWER;
else if (gCurrentSprite.spriteID == PSPRITE_BARISTUTE_KRAID_LOWER)
spriteID = PSPRITE_BARISTUTE_KRAID_UPPER;
if (spriteID != 0x0)
{
// Check if dead
count = 0x0;
for (pSprite = gSpriteData; pSprite < gSpriteData + 24; pSprite++)
{
if (pSprite->status & SPRITE_STATUS_EXISTS && !(pSprite->properties & SP_SECONDARY_SPRITE)
&& pSprite->spriteID == spriteID && pSprite->health != 0x0)
count++; // Baristute found
}
if (count == 0x0)
{
// Both baristutes dead
// Set event
EventFunction(EVENT_ACTION_SETTING, EVENT_KRAID_BARISTUTES_KILLED);
// Unlock doors
gDoorUnlockTimer = -0x14;
}
}
yPosition = gCurrentSprite.yPosition - 0x60;
xPosition = gCurrentSprite.xPosition;
rng = (u8)(gSpriteRNG * 2);
// Kill sprite
SpriteUtilSpriteDeath(DEATH_NORMAL, yPosition, xPosition, TRUE, PE_SPRITE_EXPLOSION_SINGLE_THEN_BIG);
if (gCurrentSprite.status)
{
// Has drop, spawn 2 other drops
if (gSpriteRNG & 0x1)
spriteID = PSPRITE_LARGE_ENERGY_DROP;
else
spriteID = PSPRITE_MISSILE_DROP;
SpriteSpawnDropFollowers(spriteID, gCurrentSprite.roomSlot, 0x0, gCurrentSprite.primarySpriteRAMSlot, yPosition - 0x18 + rng, xPosition + 0x4C - rng, 0x0);
if (sRandomNumberTable[gSpriteRNG] & 0x1)
spriteID = PSPRITE_LARGE_ENERGY_DROP;
else
spriteID = PSPRITE_MISSILE_DROP;
SpriteSpawnDropFollowers(spriteID, gCurrentSprite.roomSlot, 0x0, gCurrentSprite.primarySpriteRAMSlot, yPosition + 0x14 - rng, xPosition - 0x48 + rng, 0x0);
}
}
/**
* @brief 47d30 | 18c | Baristute AI
*
*/
void Baristute(void)
{
u16 spawnHealth;
u16 health;
// Check play damaged sound
if (gCurrentSprite.properties & SP_DAMAGED)
{
gCurrentSprite.properties &= ~SP_DAMAGED;
if (gCurrentSprite.status & SPRITE_STATUS_ONSCREEN)
SoundPlayNotAlreadyPlaying(0x259);
}
//Check update palette
if (gCurrentSprite.invicibilityStunFlashTimer & 0x7F)
{
// Damaged
spawnHealth = sPrimarySpriteStats[gCurrentSprite.spriteID][0x0];
health = gCurrentSprite.health;
if (health <= spawnHealth / 4)
gCurrentSprite.absolutePaletteRow = 0x3;
else if (health <= spawnHealth / 2)
gCurrentSprite.absolutePaletteRow = 0x2;
else if (health <= (spawnHealth * 3) / 4)
gCurrentSprite.absolutePaletteRow = 0x1;
}
switch (gCurrentSprite.pose)
{
case 0x0:
BaristuteInit();
break;
case BARISTUTE_POSE_JUMP_WARNING_INIT:
BaristuteJumpWarningInit();
case BARISTUTE_POSE_CHECK_WARNING_ENDED:
BaristuteCheckBeforeJumpingAnimEnded();;
break;
case BARISTUTE_POSE_JUMPING:
BaristuteJumping();
break;
case BARISTUTE_POSE_LANDING_INIT:
BaristuteLandingInit();
case BARISTUTE_POSE_LANDING:
BaristuteCheckLandingAnimNearEnded();
break;
case BARISTUTE_POSE_WALKING_INIT:
BaristuteWalkingInit();
case BARISTUTE_POSE_WALKING:
BaristuteWalking();
break;
case BARISTUTE_POSE_IDLE_INIT:
BaristuteIdleInit();
case BARISTUTE_POSE_IDLE:
BaristuteIdle();
break;
case BARISTUTE_POSE_FALLING_INIT:
BaristuteFallingInit();
case BARISTUTE_POSE_FALLING:
BaristuteFalling();
break;
default:
BaristuteDeath();
}
}

View File

@ -3,20 +3,32 @@
#include "../types.h"
#define BARISTUTE_POSE_JUMP_WARNING_INIT 0x8
#define BARISTUTE_POSE_CHECK_WARNING_ENDED 0x9
#define BARISTUTE_POSE_IDLE_INIT 0xE
#define BARISTUTE_POSE_IDLE 0xF
#define BARISTUTE_POSE_FALLING_INIT 0x1E
#define BARISTUTE_POSE_FALLING 0x1F
#define BARISTUTE_POSE_JUMPING 0x23
#define BARISTUTE_POSE_LANDING_INIT 0x24
#define BARISTUTE_POSE_LANDING 0x25
#define BARISTUTE_POSE_WALKING_INIT 0x26
#define BARISTUTE_POSE_WALKING 0x27
u8 BaristuteCheckSamusInRange(void);
void BaristuteInit(void);
void BaristuteJumpingGFXInit(void);
void BaristuteJumpWarningInit(void);
void BaristuteCheckBeforeJumpingAnimEnded(void);
void BaristuteJumping(void);
void BaristuteLandingGFXInit(void);
void BaristuteLandingInit(void);
void BaristuteCheckLandingAnimNearEnded(void);
void BaristuteGFXInit(void);
void BaristuteIdleInit(void);
void BaristuteIdle(void);
void BaristuteWalkingGFXInit(void);
void BaristuteWalkingInit(void);
void BaristutePlayWalkingSound(void);
void BaristuteWalking(void);
void BaristuteBouncingGFXInit(void);
void BaristuteBouncing(void);
void BaristuteFallingInit(void);
void BaristuteFalling(void);
void BaristuteDeath(void);
void Baristute(void);

File diff suppressed because it is too large Load Diff

View File

@ -3,22 +3,31 @@
#include "../types.h"
#define DESSGEEGA_POSE_JUMP_WARNING_INIT 0x8
#define DESSGEEGA_POSE_JUMP_WARNING 0x9
#define DESSGEEGA_POSE_IDLE 0xF
#define DESSGEEGA_POSE_LONG_BEAM_DETECT 0x11
#define DESSGEEGA_POSE_FALLING 0x1F
#define DESSGEEGA_POSE_JUMPING 0x23
#define DESSGEEGA_POSE_LANDING 0x25
#define DESSGEEGA_POSE_LONG_BEAM_SPAWNING 0x33
u8 DessgeegaCheckSamusNearLeftRight(void);
void DessgeegaInit(void);
void DessgeegaJumpingGFXInit(void);
void DessgeegaBeforeJumping(void);
void DessgeegaBeforeLanding(void);
void DessgeegaCheckSamusInRange(void);
void DessgeegaBouncingGFXInit(void);
void DessgeegaCheckBouncing(void);
void DessgeegaCheckBeforeJumpingCeilingAnimEnded(void);
void DessgeegaMoveGround(void);
void DessgeegaMoveCeiling(void);
void DessgeegaJumpWarningInit(void);
void DessgeegaJumpingInit(void);
void DessgeegaLandingInit(void);
void DessgeegaIdleInit(void);
void DessgeegaFallingInit(void);
void DessgeegaJumpWarningGround(void);
void DessgeegaJumpWarningCeiling(void);
void DessgeegaJumpingGround(void);
void DessgeegaJumpingCeiling(void);
void DessgeegaCheckLandingAnimEnded(void);
void DessgeegaJumpingGroundIntoBlock(void);
void DessgeegaJumpingCeilingIntoBlock(void);
void DessgeegaGroundIdleAnim(void);
void DessgeegaCeilingdleAnim(void);
void DessgeegaFallingGround(void);
void DessgeegaFallingCeiling(void);
void DessgeegaIdleGround(void);
void DessgeegaIdleCeiling(void);
void DessgeegaDeath(void);
void DessgeegaLongBeamDetectSamus(void);
void DessgeegaLongBeamSpawning(void);