finish sprites.h and add PlayerAvatar_GetSpriteByStateAndGender

This commit is contained in:
red031000 2025-08-28 00:25:58 +01:00
parent c4ed650d15
commit bcb39643c9
No known key found for this signature in database
GPG Key ID: D27E50C050AE0CE1
4 changed files with 183 additions and 112 deletions

View File

@ -7,116 +7,6 @@
.text
thumb_func_start PlayerAvatar_GetSpriteByStateAndGender
PlayerAvatar_GetSpriteByStateAndGender: ; 0x020555A0
push {r3, lr}
cmp r1, #0x0
bne _020555F2
cmp r0, #0x9
bhi _0205563E
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_020555B6: ; jump table (using 16-bit offset)
.short _020555CA - _020555B6 - 2; case 0
.short _020555CE - _020555B6 - 2; case 1
.short _020555D2 - _020555B6 - 2; case 2
.short _020555D6 - _020555B6 - 2; case 3
.short _020555DA - _020555B6 - 2; case 4
.short _020555DE - _020555B6 - 2; case 5
.short _020555E2 - _020555B6 - 2; case 6
.short _020555E6 - _020555B6 - 2; case 7
.short _020555EA - _020555B6 - 2; case 8
.short _020555EE - _020555B6 - 2; case 9
_020555CA:
mov r0, #0x0
pop {r3, pc}
_020555CE:
mov r0, #0x15
pop {r3, pc}
_020555D2:
mov r0, #0xb2
pop {r3, pc}
_020555D6:
mov r0, #0xb0
pop {r3, pc}
_020555DA:
mov r0, #0xb4
pop {r3, pc}
_020555DE:
mov r0, #0xba
pop {r3, pc}
_020555E2:
mov r0, #0xbc
pop {r3, pc}
_020555E6:
mov r0, #0xc4
pop {r3, pc}
_020555EA:
mov r0, #0xc6
pop {r3, pc}
_020555EE:
mov r0, #0xc8
pop {r3, pc}
_020555F2:
cmp r0, #0x9
bhi _0205563E
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02055602: ; jump table (using 16-bit offset)
.short _02055616 - _02055602 - 2; case 0
.short _0205561A - _02055602 - 2; case 1
.short _0205561E - _02055602 - 2; case 2
.short _02055622 - _02055602 - 2; case 3
.short _02055626 - _02055602 - 2; case 4
.short _0205562A - _02055602 - 2; case 5
.short _0205562E - _02055602 - 2; case 6
.short _02055632 - _02055602 - 2; case 7
.short _02055636 - _02055602 - 2; case 8
.short _0205563A - _02055602 - 2; case 9
_02055616:
mov r0, #0x61
pop {r3, pc}
_0205561A:
mov r0, #0x62
pop {r3, pc}
_0205561E:
mov r0, #0xb3
pop {r3, pc}
_02055622:
mov r0, #0xb1
pop {r3, pc}
_02055626:
mov r0, #0xb5
pop {r3, pc}
_0205562A:
mov r0, #0xbb
pop {r3, pc}
_0205562E:
mov r0, #0xbd
pop {r3, pc}
_02055632:
mov r0, #0xc5
pop {r3, pc}
_02055636:
mov r0, #0xc7
pop {r3, pc}
_0205563A:
mov r0, #0xc9
pop {r3, pc}
_0205563E:
bl GF_AssertFail
mov r0, #0x0
pop {r3, pc}
.balign 4
thumb_func_start sub_02055648
sub_02055648: ; 0x02055648
push {r3, lr}

View File

@ -24,7 +24,6 @@ static s32 PlayerSaveData_GetState(PlayerSaveData *playerSaveData);
static void PlayerSaveData_SetState(PlayerSaveData *playerSaveData, s32 state);
static void PlayerAvatar_SetPlayerSaveDataState(PlayerAvatar *avatar, s32 state);
extern u32 PlayerAvatar_GetSpriteByStateAndGender(s32 state, u32 gender);
extern void ov05_021EDBC8(PlayerAvatar *avatar);
extern u32 ov06_0224ABAC(LocalMapObject *mapObject, u32 x, u32 z, u32 direction, u32 param4);
extern void sub_020556C8(PlayerAvatar *avatar, u32 param1);
@ -414,3 +413,55 @@ void PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate(PlayerAvatar *avatar, B
MapObject_SetIgnoreHeights(mapObject, TRUE);
}
}
u32 PlayerAvatar_GetSpriteByStateAndGender(s32 state, u32 gender) {
if (gender == PLAYER_GENDER_MALE) {
switch (state) {
case PLAYER_STATE_WALKING:
return SPRITE_HERO;
case PLAYER_STATE_CYCLING:
return SPRITE_CYCLEHERO;
case PLAYER_STATE_SURFING:
return SPRITE_SWIMHERO;
case PLAYER_STATE_USE_HM:
return SPRITE_SPHERO;
case PLAYER_STATE_WATERING:
return SPRITE_WATERHERO;
case PLAYER_STATE_CONTEST:
return SPRITE_CONTESTHERO;
case PLAYER_STATE_FISHING:
return SPRITE_FISHINGHERO;
case PLAYER_STATE_POKETCH:
return SPRITE_POKEHERO;
case PLAYER_STATE_SAVING:
return SPRITE_SAVEHERO;
case PLAYER_STATE_HEAL:
return SPRITE_BANZAIHERO;
}
} else {
switch (state) {
case PLAYER_STATE_WALKING:
return SPRITE_HEROINE;
case PLAYER_STATE_CYCLING:
return SPRITE_CYCLEHEROINE;
case PLAYER_STATE_SURFING:
return SPRITE_SWIMHEROINE;
case PLAYER_STATE_USE_HM:
return SPRITE_SPHEROINE;
case PLAYER_STATE_WATERING:
return SPRITE_WATERHEROINE;
case PLAYER_STATE_CONTEST:
return SPRITE_CONT_HEROINE;
case PLAYER_STATE_FISHING:
return SPRITE_FISH_HEROINE;
case PLAYER_STATE_POKETCH:
return SPRITE_POKEHEROINE;
case PLAYER_STATE_SAVING:
return SPRITE_SAVEHEROINE;
case PLAYER_STATE_HEAL:
return SPRITE_BANZAIHEROINE;
}
}
GF_ASSERT(FALSE);
return 0;
}

View File

@ -235,7 +235,136 @@
#define SPRITE_SEED20_C 4156
#define SPRITE_SEED21_A 4157
#define SPRITE_SEED21_B 4158
#define SPRITE_SEED21_c 4159
#define SPRITE_SEED21_C 4159
#define SPRITE_SEED22_A 4160
#define SPRITE_SEED22_B 4161
#define SPRITE_SEED22_C 4162
#define SPRITE_SEED23_A 4163
#define SPRITE_SEED23_B 4164
#define SPRITE_SEED23_C 4165
#define SPRITE_SEED24_A 4166
#define SPRITE_SEED24_B 4167
#define SPRITE_SEED24_C 4168
#define SPRITE_SEED25_A 4169
#define SPRITE_SEED25_B 4170
#define SPRITE_SEED25_C 4171
#define SPRITE_SEED26_A 4172
#define SPRITE_SEED26_B 4173
#define SPRITE_SEED26_C 4174
#define SPRITE_SEED27_A 4175
#define SPRITE_SEED27_B 4176
#define SPRITE_SEED27_C 4177
#define SPRITE_SEED28_A 4178
#define SPRITE_SEED28_B 4179
#define SPRITE_SEED28_C 4180
#define SPRITE_SEED29_A 4181
#define SPRITE_SEED29_B 4182
#define SPRITE_SEED29_C 4183
#define SPRITE_SEED30_A 4184
#define SPRITE_SEED30_B 4185
#define SPRITE_SEED30_C 4186
#define SPRITE_SEED31_A 4187
#define SPRITE_SEED31_B 4188
#define SPRITE_SEED31_C 4189
#define SPRITE_SEED32_A 4190
#define SPRITE_SEED32_B 4191
#define SPRITE_SEED32_C 4192
#define SPRITE_SEED33_A 4193
#define SPRITE_SEED33_B 4194
#define SPRITE_SEED33_C 4195
#define SPRITE_SEED34_A 4196
#define SPRITE_SEED34_B 4197
#define SPRITE_SEED34_C 4198
#define SPRITE_SEED35_A 4199
#define SPRITE_SEED35_B 4200
#define SPRITE_SEED35_C 4201
#define SPRITE_SEED36_A 4202
#define SPRITE_SEED36_B 4203
#define SPRITE_SEED36_C 4204
#define SPRITE_SEED37_A 4205
#define SPRITE_SEED37_B 4206
#define SPRITE_SEED37_C 4207
#define SPRITE_SEED38_A 4208
#define SPRITE_SEED38_B 4209
#define SPRITE_SEED38_C 4210
#define SPRITE_SEED39_A 4211
#define SPRITE_SEED39_B 4212
#define SPRITE_SEED39_C 4213
#define SPRITE_SEED40_A 4214
#define SPRITE_SEED40_B 4215
#define SPRITE_SEED40_C 4216
#define SPRITE_SEED41_A 4217
#define SPRITE_SEED41_B 4218
#define SPRITE_SEED41_C 4219
#define SPRITE_SEED42_A 4220
#define SPRITE_SEED42_B 4221
#define SPRITE_SEED42_C 4222
#define SPRITE_SEED43_A 4223
#define SPRITE_SEED43_B 4224
#define SPRITE_SEED43_C 4225
#define SPRITE_SEED44_A 4226
#define SPRITE_SEED44_B 4227
#define SPRITE_SEED44_C 4228
#define SPRITE_SEED45_A 4229
#define SPRITE_SEED45_B 4230
#define SPRITE_SEED45_C 4231
#define SPRITE_SEED46_A 4232
#define SPRITE_SEED46_B 4233
#define SPRITE_SEED46_C 4234
#define SPRITE_SEED47_A 4235
#define SPRITE_SEED47_B 4236
#define SPRITE_SEED47_C 4237
#define SPRITE_SEED48_A 4238
#define SPRITE_SEED48_B 4239
#define SPRITE_SEED48_C 4240
#define SPRITE_SEED49_A 4241
#define SPRITE_SEED49_B 4242
#define SPRITE_SEED49_C 4243
#define SPRITE_SEED50_A 4244
#define SPRITE_SEED50_B 4245
#define SPRITE_SEED50_C 4246
#define SPRITE_SEED51_A 4247
#define SPRITE_SEED51_B 4248
#define SPRITE_SEED51_C 4249
#define SPRITE_SEED52_A 4250
#define SPRITE_SEED52_B 4251
#define SPRITE_SEED52_C 4252
#define SPRITE_SEED53_A 4253
#define SPRITE_SEED53_B 4254
#define SPRITE_SEED53_C 4255
#define SPRITE_SEED54_A 4256
#define SPRITE_SEED54_B 4257
#define SPRITE_SEED54_C 4258
#define SPRITE_SEED55_A 4259
#define SPRITE_SEED55_B 4260
#define SPRITE_SEED55_C 4261
#define SPRITE_SEED56_A 4262
#define SPRITE_SEED56_B 4263
#define SPRITE_SEED56_C 4264
#define SPRITE_SEED57_A 4265
#define SPRITE_SEED57_B 4266
#define SPRITE_SEED57_C 4267
#define SPRITE_SEED58_A 4268
#define SPRITE_SEED58_B 4269
#define SPRITE_SEED58_C 4270
#define SPRITE_SEED59_A 4271
#define SPRITE_SEED59_B 4272
#define SPRITE_SEED59_C 4273
#define SPRITE_SEED60_A 4274
#define SPRITE_SEED60_B 4275
#define SPRITE_SEED60_C 4276
#define SPRITE_SEED61_A 4277
#define SPRITE_SEED61_B 4278
#define SPRITE_SEED61_C 4279
#define SPRITE_SEED62_A 4280
#define SPRITE_SEED62_B 4281
#define SPRITE_SEED62_C 4282
#define SPRITE_SEED63_A 4283
#define SPRITE_SEED63_B 4284
#define SPRITE_SEED63_C 4285
#define SPRITE_SEED64_A 4286
#define SPRITE_SEED64_B 4287
#define SPRITE_SEED64_C 4288
#define SPRITE_CAMERA_FOCUS 8192

View File

@ -92,5 +92,6 @@ void sub_02055514(PlayerAvatar *avatar, u32 x, u32 z, u32 direction);
void PlayerAvatar_SetMapObjectYPosition(PlayerAvatar *avatar, fx32 yVal);
void PlayerAvatar_ToggleAutomaticHeightUpdating(PlayerAvatar *avatar, u8 flag);
void PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate(PlayerAvatar *avatar, BOOL flag);
u32 PlayerAvatar_GetSpriteByStateAndGender(s32 state, u32 gender);
#endif // POKEDIAMOND_PLAYER_AVATAR_H