Skip to content

Commit e3668c1

Browse files
PistonMinerZephiles
authored andcommitted
rel: Add support for NPCs
1 parent 4b3261d commit e3668c1

File tree

11 files changed

+1239
-266
lines changed

11 files changed

+1239
-266
lines changed

ttyd-tools/rel/include/commonfunctions.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include <gc/OSModule.h>
44
#include <ttyd/seqdrv.h>
5+
#include <ttyd/npcdrv.h>
56
#include <ttyd/party.h>
67

78
#include <cstdint>
@@ -20,7 +21,7 @@ void *getBattleWorkPointer();
2021
void *getMarioBattlePointer();
2122
void *getPartnerBattlePointer();
2223
void *getActorPointer(uint32_t slot);
23-
void *getNPCFieldWorkPointer(uint32_t npcSlot);
24+
ttyd::npcdrv::NpcEntry *getNpcEntryData(uint32_t slot);
2425
uint32_t secondsToFrames(uint32_t seconds);
2526
uint32_t getSequencePosition();
2627
void setSequencePosition(uint32_t value);

ttyd-tools/rel/include/mod.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <gc/OSModule.h>
44
#include <gc/OSContext.h>
55
#include <ttyd/evtmgr.h>
6+
#include <ttyd/npcdrv.h>
67
#include <ttyd/dispdrv.h>
78
#include <ttyd/battle_unit.h>
89

@@ -28,7 +29,7 @@ class Mod
2829
uint32_t setIndexWarpEntrance(ttyd::evtmgr::EvtEntry *, uint32_t);
2930
int32_t fixMarioKeyOn();
3031
bool performRelPatches(gc::OSModule::OSModuleInfo *, void *);
31-
void *disableBattles(uint32_t, void *);
32+
ttyd::npcdrv::NpcEntry *disableBattles(uint32_t, void *);
3233
void drawArtAttackHitboxes(ttyd::dispdrv::CameraId);
3334
int32_t displayActionCommandsTimingHook(void *, ttyd::battle_unit::AttackParams *);
3435
void errorHandler(uint16_t, gc::OSContext::OSContext *, uint32_t, uint32_t);
@@ -48,7 +49,7 @@ class Mod
4849
uint32_t (*mPFN_evt_bero_get_info_trampoline)(ttyd::evtmgr::EvtEntry *, uint32_t) = nullptr;
4950
int32_t (*mPFN_marioKeyOn_trampoline)() = nullptr;
5051
bool (*mPFN_OSLink_trampoline)(gc::OSModule::OSModuleInfo *, void *) = nullptr;
51-
void *(*mPFN_fbatHitCheck_trampoline)(uint32_t, void *) = nullptr;
52+
ttyd::npcdrv::NpcEntry *(*mPFN_fbatHitCheck_trampoline)(uint32_t, void *) = nullptr;
5253
void (*mPFN_scissor_disp_control_trampoline)(ttyd::dispdrv::CameraId) = nullptr;
5354

5455
int32_t (*mPFN_BattleActionCommandCheckDefence_trampoline)(

ttyd-tools/rel/include/ttyd.eu.lst

Lines changed: 166 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -418,80 +418,192 @@
418418
80311524:worldData
419419

420420
// npcdrv.o
421-
// 80043020:fbatPreventMarioEventChk
422-
// 80043054:npcCheckBlow
423-
// 80043194:npcCalcScore
424-
// 8004329C:fbatSandersBombTriggerOn
425-
// 800432B0:npcKoopaModeMobjBoundDeadCheck
426-
// 80043378:npcKoopaModeEncountCheck
427-
// 800434F4:npcClearDeadInfo
428-
// 80043528:npcGetBackItemEntry
421+
80043020:fbatPreventMarioEventChk
422+
80043054:npcCheckBlow
423+
80043194:npcCalcScore
424+
8004329C:fbatSandersBombTriggerOn
425+
800432B0:npcKoopaModeMobjBoundDeadCheck
426+
80043378:npcKoopaModeEncountCheck
427+
800434F4:npcClearDeadInfo
428+
80043528:npcGetBackItemEntry
429429
// 800435C4:_majinai_effect
430430
// 8004367C:_check
431-
// 800436EC:npcExecAllReglEvt
432-
// 800437AC:npcWaitAllInitEvtEnd
433-
// 80043880:npcExecAllInitEvt
434-
// 8004394C:dbGetDefData
435-
// 800439BC:npcSetLink
436-
// 800439C8:npcSetSlave
437-
// 800439DC:npcSetBtlSetupWork
438-
// 800439EC:npcGetBtlSetupWork
439-
// 800439FC:npcBlurOff
440-
// 80043AA0:npcBlurOn
441-
// 80043BBC:npcSetColor
442-
// 80043C48:npcStartForOneEvent
443-
// 80043CB0:npcStartForEvent
444-
// 80043D60:npcStopForOneEvent
445-
// 80043DC0:npcStopForEvent
446-
// 80043E68:npcSetBattleInfo
447-
// 80043F60:npcSetupBattleInfo
448-
// 800441E0:npcCheckInterrupt
431+
800436EC:npcExecAllReglEvt
432+
800437AC:npcWaitAllInitEvtEnd
433+
80043880:npcExecAllInitEvt
434+
8004394C:dbGetDefData
435+
800439BC:npcSetLink
436+
800439C8:npcSetSlave
437+
800439DC:npcSetBtlSetupWork
438+
800439EC:npcGetBtlSetupWork
439+
800439FC:npcBlurOff
440+
80043AA0:npcBlurOn
441+
80043BBC:npcSetColor
442+
80043C48:npcStartForOneEvent
443+
80043CB0:npcStartForEvent
444+
80043D60:npcStopForOneEvent
445+
80043DC0:npcStopForEvent
446+
80043E68:npcSetBattleInfo
447+
80043F60:npcSetupBattleInfo
448+
800441E0:npcCheckInterrupt
449449
// 80044414:_npcHitCheckHammerAllMotion
450450
// 8004479C:_npcHitCheckSphere
451451
80044914:fbatHitCheck
452-
// 800466EC:fbatHitCheckAll
453-
// 80046714:fbatNpcTalkCheck
454-
// 80046774:npcGroupDead
452+
800466EC:fbatHitCheckAll
453+
80046714:fbatNpcTalkCheck
454+
80046774:npcGroupDead
455455
// 800467B8:_npcGroupDead
456456
// 80046B14:_npcDead
457-
// 80046B60:fbatBattleMode
458-
// 800471C4:fbatTalkMode
459-
// 80047364:fbatEncountCheck
457+
80046B60:fbatBattleMode
458+
800471C4:fbatTalkMode
459+
80047364:fbatEncountCheck
460460
// 80047EE4:_fbatFirstAttackAnnouceDisp
461-
// 80048268:fbatSetAttackAnnounceEnable
462-
// 8004827C:fbatSetAttackAnnounce
463-
// 80048374:fbatChangeMode
461+
80048268:fbatSetAttackAnnounceEnable
462+
8004827C:fbatSetAttackAnnounce
463+
80048374:fbatChangeMode
464464
80048384:fbatGetPointer
465-
// 80048390:npcNearDistCheck
466-
// 80048500:npcHitCheckSide
467-
// 80048E18:npcTransRytoFaceDir
468-
// 80048E54:npcTuningRy
465+
80048390:npcNearDistCheck
466+
80048500:npcHitCheckSide
467+
80048E18:npcTransRytoFaceDir
468+
80048E54:npcTuningRy
469469
// 80048E84:npcMoveG
470470
// 800491B4:npcCheckHitMarioSide
471-
// 8004972C:npcSetStayPose
472-
// 80049884:npcSetTalkPose
473-
// 800499DC:npcSetMarioAutoTalkPose
474-
// 80049A1C:npcNameToPtr_NoAssert
475-
// 80049AC8:npcNameToPtr
476-
// 80049B64:npcMain
477-
// 8004B508:npcDeleteGroup
471+
8004972C:npcSetStayPose
472+
80049884:npcSetTalkPose
473+
800499DC:npcSetMarioAutoTalkPose
474+
80049A1C:npcNameToPtr_NoAssert
475+
80049AC8:npcNameToPtr
476+
80049B64:npcMain
477+
8004B508:npcDeleteGroup
478478
// 8004B54C:_npcDeleteGroup
479-
// 8004B7F0:npcDelete
480-
// 8004B910:npcGetTribe
481-
// 8004B97C:npcEntry
482-
// 8004BBCC:npcGetReactionOfLivingBody
483-
// 8004BBE4:npcReset
484-
// 8004BC58:npcInit
479+
8004B7F0:npcDelete
480+
8004B910:npcGetTribe
481+
8004B97C:npcEntry
482+
8004BBCC:npcGetReactionOfLivingBody
483+
8004BBE4:npcReset
484+
8004BC58:npcInit
485485
// 8004BD24:npcDisp_blur
486486
// 8004C010:npcDisp_offscreen
487487
// 8004C31C:npcDisp_offscreen_xlu
488488
// 8004C5F4:npcDisp
489489
// 8004C8C8:npcDisp_xlu
490490
// 8004CB68:mtx_setup
491-
// 8004CE20:npcRecoveryFiledNpc
492-
// 8004CF40:npcReleaseFiledNpc
491+
8004CE20:npcRecoveryFiledNpc
492+
8004CF40:npcReleaseFiledNpc
493493
8004D054:npcGetWorkPtr
494494

495+
// evt_npc.o
496+
8004D070:evt_npc_release_filednpc
497+
8004D0D0:evt_npc_sound_data_set
498+
8004D1DC:evt_npc_sound_data_reset
499+
// 8004D268:unk_US_PAL_01_8004d268
500+
8004D4B4:evt_fbat_trans_floor_position
501+
8004D5FC:evt_npc_kamek_kemuri2
502+
8004D6FC:evt_npc_kamek_kemuri1
503+
8004D790:evt_npc_kamek_move_position
504+
// 8004DEB0:_kamek_houki_kemuri
505+
8004DFB4:evt_npc_calc_score
506+
8004E000:evt_npc_get_kpencount_type
507+
8004E05C:evt_npc_majo_disp_off
508+
8004E294:evt_npc_majo_disp_on
509+
8004E5D4:evt_npc_set_autotalkpose
510+
8004E68C:evt_npc_set_tribe
511+
8004E790:evt_npc_set_balloontype
512+
8004E7EC:evt_npc_wait_msec
513+
8004E8C0:evt_npc_set_unitwork
514+
8004E934:evt_npc_get_unitwork
515+
8004E9A4:evt_npc_getback_item_entry
516+
8004E9F0:evt_npc_get_drop_coin
517+
// 8004EA80:_npc_check_coin_group
518+
// 8004EAF8:_npc_check_coin
519+
8004EB0C:evt_npc_get_drop_flower
520+
8004EBCC:evt_npc_get_drop_heart
521+
8004EC8C:evt_npc_get_drop_item
522+
8004ED00:evt_npc_get_drop_fixitem
523+
8004ED58:evt_npc_set_link
524+
8004EDD8:evt_npc_set_btlsetup_work
525+
8004EE54:evt_npc_get_btlsetup_work
526+
8004EECC:evt_npc_get_battle_rule_keep_result
527+
8004EF18:evt_npc_check_escape_battle
528+
8004EF54:evt_npc_get_battle_result
529+
8004EFA4:evt_npc_wait_battle_end
530+
8004F020:evt_npc_battle_start
531+
8004F0D8:evt_npc_set_battle_rule
532+
8004F15C:evt_npc_set_battle_info
533+
8004F1C0:evt_npc_set_attack_mode
534+
8004F21C:evt_npc_check
535+
8004F284:evt_npc_blur_onoff
536+
8004F2F4:evt_npc_set_color
537+
8004F3A8:evt_npc_set_offscreen
538+
8004F428:evt_npc_change_fbat_mode
539+
8004F45C:evt_npc_start_for_one_event
540+
8004F4A8:evt_npc_stop_for_one_event
541+
8004F4F4:evt_npc_start_for_event
542+
8004F518:evt_npc_stop_for_event
543+
8004F53C:evtNpcNameToPtr_NoAssert
544+
8004F6A4:evtNpcNameToPtr
545+
8004F80C:evt_npc_facedirection_add
546+
8004F908:evt_npc_restart_regular_event
547+
8004F960:evt_npc_get_reglid
548+
8004F9B8:evt_npc_change_interrupt
549+
8004FA68:evt_npc_get_loiter_dir
550+
8004FB54:evt_npc_add_dirdist
551+
8004FC64:evt_set_dir_to_home
552+
8004FCD4:evt_set_dir_to_target
553+
8004FD4C:evt_get_target_dir
554+
// 8004FDC8:_get_target_dir
555+
8004FE8C:evt_npc_set_camid
556+
8004FEE8:evt_npc_pera_onoff
557+
8004FF6C:evt_npc_status_check
558+
8004FFD8:evt_npc_status_onoff
559+
80050074:evt_npc_reaction_flag_onoff
560+
80050110:evt_npc_flag_check
561+
8005017C:evt_npc_flag_onoff
562+
80050218:evt_npc_wait_anim
563+
80050294:evt_npc_wait_pera
564+
800502F0:evt_npc_set_force_regl_anim
565+
8005036C:evt_npc_clear_paper
566+
800503C4:evt_npc_set_paper_anim
567+
80050430:evt_npc_set_paper
568+
800504A8:evt_npc_set_run_anim
569+
80050524:evt_npc_set_walk_anim
570+
800505A0:evt_npc_set_talk_anim
571+
8005061C:evt_npc_set_stay_anim
572+
80050698:evt_npc_set_stop_anim
573+
80050714:evt_npc_set_confuse_anim
574+
80050790:evt_npc_set_damage_anim
575+
8005080C:evt_npc_set_anim
576+
80050894:evt_npc_get_dir
577+
800508F8:evt_npc_reverse_ry
578+
80050958:evt_npc_set_ry_lr
579+
80050A54:evt_npc_set_ry
580+
80050AB8:_intplGetFloat
581+
80050C98:evt_npc_homing_target
582+
80051334:evt_npc_return_interrupt
583+
80051388:evt_npc_glide_position
584+
80051934:evt_npc_jump_position_nohit
585+
80051C98:evt_npc_jump_position
586+
80052320:evt_npc_move_position
587+
800529B0:evt_npc_set_rotate_offset
588+
80052AFC:evt_npc_add_rotate
589+
80052C28:evt_npc_set_rotate
590+
80052D74:evt_npc_get_rotate
591+
80052DF8:evt_npc_set_home_position
592+
80052EE0:evt_npc_get_home_position
593+
80052F64:evt_npc_get_position
594+
80052FE8:evt_npc_get_scale
595+
8005306C:evt_npc_set_scale
596+
80053100:evt_npc_get_height
597+
8005315C:evt_npc_set_height
598+
800531C0:evt_npc_set_width
599+
80053224:evt_npc_set_position
600+
80053308:evt_npc_setup
601+
80053590:evt_npc_get_ReactionOfLivingBody
602+
800535E4:evt_npc_check_delete
603+
80053638:evt_npc_delete
604+
80053684:evt_npc_slave_entry
605+
800537B0:evt_npc_entry
606+
495607
// evt_sub.o
496608
// 80053830:mail_evt_gor_04_keyoff_check
497609
// 80053890:irai_mail_check

0 commit comments

Comments
 (0)