Initial commit
This commit is contained in:
65
src/sm_92.c
Normal file
65
src/sm_92.c
Normal file
@@ -0,0 +1,65 @@
|
||||
// Samus animations
|
||||
|
||||
#include "ida_types.h"
|
||||
#include "variables.h"
|
||||
#include "funcs.h"
|
||||
|
||||
#define kSamus_AnimationDefinitionPtrs ((uint16*)RomPtr(0x92d94e))
|
||||
#define kSamus_TileDefs_TopHalf ((uint16*)RomPtr(0x92d91e))
|
||||
#define kSamus_TileDefs_BottomHalf ((uint16*)RomPtr(0x92d938))
|
||||
|
||||
void SetSamusTilesDefsForCurAnim(void) { // 0x928000
|
||||
int16 v2;
|
||||
|
||||
R18_ = 4 * samus_anim_frame;
|
||||
R20_ = 4 * samus_anim_frame + 2;
|
||||
uint16 v0 = 4 * samus_anim_frame + kSamus_AnimationDefinitionPtrs[samus_pose];
|
||||
R22_ = get_SamusTileAnimationDefs(v0)->top_half_idx;
|
||||
tempB24 = get_SamusTileAnimationDefs(v0 + 1)->top_half_idx;
|
||||
R18_ = 7 * tempB24;
|
||||
nmi_copy_samus_top_half_src = 7 * tempB24 + kSamus_TileDefs_TopHalf[R22_];
|
||||
LOBYTE(nmi_copy_samus_halves) = 1;
|
||||
uint16 v1 = R20_ + kSamus_AnimationDefinitionPtrs[samus_pose];
|
||||
v2 = *RomPtr_92(v1);
|
||||
if (v2 != 255) {
|
||||
tempB26 = *RomPtr_92(v1 + 1);
|
||||
R20_ = 7 * tempB26;
|
||||
nmi_copy_samus_bottom_half_src = 7 * tempB26 + kSamus_TileDefs_BottomHalf[v2];
|
||||
HIBYTE(nmi_copy_samus_halves) = 1;
|
||||
}
|
||||
}
|
||||
|
||||
uint8 PlaySamusFanfare(void) { // 0x92ED24
|
||||
if (substate) {
|
||||
if (substate == 5)
|
||||
PlayRoomMusicTrackAfterAFrames(0x168u);
|
||||
} else {
|
||||
QueueMusic_DelayedY(1u, 0xEu);
|
||||
}
|
||||
if (sign16(substate - 359)) {
|
||||
++substate;
|
||||
return 0;
|
||||
} else {
|
||||
samus_last_different_pose = samus_prev_pose;
|
||||
*(uint16 *)&samus_last_different_pose_x_dir = *(uint16 *)&samus_prev_pose_x_dir;
|
||||
samus_prev_pose = samus_pose;
|
||||
*(uint16 *)&samus_prev_pose_x_dir = *(uint16 *)&samus_pose_x_dir;
|
||||
substate = 0;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
void Unused_SamusTileViewer(void) { // 0x92ED7A
|
||||
DrawSamusSpritemap(0x182u, 0x40u, 0x40u);
|
||||
DrawSamusSpritemap(0x183u, 0xC0u, 0x40u);
|
||||
DrawSamusSpritemap(0x184u, 0x80, 0x60u);
|
||||
DrawSamusSpritemap(0x185u, 0x80, 0x50u);
|
||||
}
|
||||
|
||||
void DrawSamusSuitExploding(void) { // 0x92EDBE
|
||||
if (samus_pose_x_dir == 4)
|
||||
R18_ = g_word_7E0DE4 + 2085;
|
||||
else
|
||||
R18_ = g_word_7E0DE4 + 2076;
|
||||
DrawSamusSpritemap(R18_, samus_x_pos, samus_y_pos);
|
||||
}
|
||||
Reference in New Issue
Block a user