summaryrefslogtreecommitdiff
path: root/libs/Z2AudioLib/Z2LinkMgr.cpp
blob: 27ecf3ac6900e8de3e58c1751067820620d1f843 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
//
// Generated By: dol2asm
// Translation Unit: Z2LinkMgr
//

#include "Z2AudioLib/Z2LinkMgr.h"
#include "Z2AudioLib/Z2Creature.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/os.h"
#include "global.h"

//
// Types:
//

struct Z2SoundObjCoach {
    /* 802C54B8 */ Z2SoundObjCoach();
    /* 802C54FC */ void init(Vec*, u8);
    /* 802C551C */ void startWheelSound(f32);
    /* 802C56C0 */ void startFireSound(u16);
    /* 802C57C0 */ int startSound(JAISoundID, u32, s8);
};

//
// Forward References:
//

extern "C" void setLinkGroupInfo__14Z2CreatureLinkFUc();
extern "C" void setLinkHp__14Z2CreatureLinkFll();
extern "C" void setLinkSwordType__14Z2CreatureLinkFll();
extern "C" void setLinkShieldType__14Z2CreatureLinkFll();
extern "C" void setLinkBootsType__14Z2CreatureLinkFl();
extern "C" void __ct__14Z2CreatureLinkFv();
extern "C" void __dt__18Z2LinkSoundStarterFv();
extern "C" void __dt__14Z2CreatureLinkFv();
extern "C" void deleteObject__14Z2CreatureLinkFv();
extern "C" void init__14Z2CreatureLinkFP3VecP3VecP3Vec();
extern "C" void initKantera__14Z2CreatureLinkFP3Vec();
extern "C" void deleteKantera__14Z2CreatureLinkFv();
extern "C" void setKanteraState__14Z2CreatureLinkFUc();
extern "C" void framework__14Z2CreatureLinkFUlSc();
extern "C" void setSinkDepth__14Z2CreatureLinkFSc();
extern "C" void setRiding__14Z2CreatureLinkFb();
extern "C" void setMagnetized__14Z2CreatureLinkFb();
extern "C" void setWolfEyeOpen__14Z2CreatureLinkFb();
extern "C" void startLinkSound__14Z2CreatureLinkF10JAISoundIDUlSc();
extern "C" void startLinkSoundLevel__14Z2CreatureLinkF10JAISoundIDUlSc();
extern "C" void startLinkVoice__14Z2CreatureLinkF10JAISoundIDSc();
extern "C" void startLinkVoiceLevel__14Z2CreatureLinkF10JAISoundIDSc();
extern "C" void startLinkSwordSound__14Z2CreatureLinkF10JAISoundIDUlSc();
extern "C" void startCollisionSE__14Z2CreatureLinkFUlUl();
extern "C" void startHitItemSE__14Z2CreatureLinkFUlUlP14Z2SoundObjBasef();
extern "C" void setResumeAttack__14Z2CreatureLinkFb();
extern "C" void __ct__18Z2LinkSoundStarterFv();
extern "C" void func_802C4928();
extern "C" void __ct__14Z2CreatureRideFv();
extern "C" void __dt__18Z2RideSoundStarterFv();
extern "C" void __dt__14Z2CreatureRideFv();
extern "C" void deleteObject__14Z2CreatureRideFv();
extern "C" void init__14Z2CreatureRideFP3VecP3VecUcUc();
extern "C" void setLinkRiding__14Z2CreatureRideFb();
extern "C" void __ct__18Z2RideSoundStarterFP14Z2CreatureRide();
extern "C" void func_802C5284();
extern "C" void __ct__15Z2SoundObjCoachFv();
extern "C" void init__15Z2SoundObjCoachFP3VecUc();
extern "C" void startWheelSound__15Z2SoundObjCoachFf();
extern "C" void startFireSound__15Z2SoundObjCoachFUs();
extern "C" void startSound__15Z2SoundObjCoachF10JAISoundIDUlSc();
extern "C" static void func_802C588C();
extern "C" static void func_802C5894();
extern "C" u8 mLinkPtr__14Z2CreatureLink[4 + 4 /* padding */];

//
// External References:
//

extern "C" void isEventBit__11dSv_event_cCFUs();
extern "C" void stop__8JAISoundFUl();
extern "C" void moveVolume__18JAISoundParamsMoveFfUl();
extern "C" void movePitch__18JAISoundParamsMoveFfUl();
extern "C" void __dt__15JAISoundStarterFv();
extern "C" void linearTransform__6Z2CalcFfffffb();
extern "C" void getParamByExp__6Z2CalcFffffffQ26Z2Calc9CurveSign();
extern "C" void __ct__14Z2SoundStarterFb();
extern "C" void func_802AABF4();
extern "C" void func_802AAC3C();
extern "C" void setPortData__14Z2SoundStarterFP14JAISoundHandleUlUsSc();
extern "C" void getHandleSoundID__14Z2SoundHandlesF10JAISoundID();
extern "C" void stopAllSounds__14Z2SoundHandlesFUl();
extern "C" void isActive__14Z2SoundHandlesCFv();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void setBattleSeqState__8Z2SeqMgrFUc();
extern "C" void setBattleLastHit__8Z2SeqMgrFUc();
extern "C" void setFxForceOff__11Z2FxLineMgrFb();
extern "C" void setTargetVolume__10Z2AudienceFfi();
extern "C" void __ct__14Z2SoundObjBaseFv();
extern "C" void __dt__14Z2SoundObjBaseFv();
extern "C" void init__14Z2SoundObjBaseFP3VecUc();
extern "C" void deleteObject__14Z2SoundObjBaseFv();
extern "C" void framework__14Z2SoundObjBaseFUlSc();
extern "C" void dispose__14Z2SoundObjBaseFv();
extern "C" void stopOK__14Z2SoundObjBaseFR17Z2SoundHandlePool();
extern "C" void startSound__14Z2SoundObjBaseF10JAISoundIDUlSc();
extern "C" void startLevelSound__14Z2SoundObjBaseF10JAISoundIDUlSc();
extern "C" void startCollisionSE__14Z2SoundObjBaseFUlUlP14Z2SoundObjBase();
extern "C" void __ct__16Z2SoundObjSimpleFv();
extern "C" void setGhostEnemyState__13Z2SoundObjMgrFUc();
extern "C" void __ct__10Z2CreatureFv();
extern "C" void __dt__10Z2CreatureFv();
extern "C" void deleteObject__10Z2CreatureFv();
extern "C" void init__10Z2CreatureFP3VecP3VecUcUc();
extern "C" void init__10Z2CreatureFP3VecP3VecP3VecUcUcUc();
extern "C" void setSoundStarter__10Z2CreatureFP14Z2SoundStarter();
extern "C" void framework__10Z2CreatureFUlSc();
extern "C" void startCreatureSound__10Z2CreatureF10JAISoundIDUlSc();
extern "C" void startCreatureSoundLevel__10Z2CreatureF10JAISoundIDUlSc();
extern "C" void startCreatureVoice__10Z2CreatureF10JAISoundIDSc();
extern "C" void startCreatureVoiceLevel__10Z2CreatureF10JAISoundIDSc();
extern "C" void startCreatureExtraSound__10Z2CreatureF10JAISoundIDUlSc();
extern "C" void startCreatureExtraSoundLevel__10Z2CreatureF10JAISoundIDUlSc();
extern "C" void startCollisionSE__10Z2CreatureFUlUl();
extern "C" void __dl__FPv();
extern "C" void _savegpr_24();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_24();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
extern "C" extern void* __vt__14Z2SoundStarter[5 + 1 /* padding */];
extern "C" extern void* __vt__16Z2SoundObjSimple[8];

//
// Declarations:
//

/* 802C321C-802C3220 2BDB5C 0004+00 0/0 1/1 0/0 .text setLinkGroupInfo__14Z2CreatureLinkFUc */
void Z2CreatureLink::setLinkGroupInfo(u8) {}

/* 802C3220-802C3228 -00001 0008+00 0/0 0/0 0/0 .text            setLinkHp__14Z2CreatureLinkFll */
void Z2CreatureLink::setLinkHp(s32 hp, s32) {
    mLinkHp = hp;
}

/* 802C3228-802C328C 2BDB68 0064+00 0/0 1/1 0/0 .text setLinkSwordType__14Z2CreatureLinkFll */
void Z2CreatureLink::setLinkSwordType(s32 i_swordType, s32 param_1) {
    mLinkSwordType = i_swordType;
    mFlag3 = param_1 == 1;

    if (mLinkSwordType != 0) {
        if (mLinkShieldType != 0 && !mFlag4) {
            mFlag5 = true;
            return;
        }
    }

    mFlag5 = false;
}

/* 802C328C-802C32F0 2BDBCC 0064+00 0/0 1/1 0/0 .text setLinkShieldType__14Z2CreatureLinkFll */
void Z2CreatureLink::setLinkShieldType(s32 i_shieldType, s32 param_1) {
    mLinkShieldType = i_shieldType;
    mFlag4 = param_1 == 1;

    if (mLinkSwordType != 0) {
        if (mLinkShieldType != 0 && !mFlag4) {
            mFlag5 = true;
            return;
        }
    }

    mFlag5 = false;
}

/* 802C32F0-802C333C 2BDC30 004C+00 0/0 1/1 0/0 .text setLinkBootsType__14Z2CreatureLinkFl */
void Z2CreatureLink::setLinkBootsType(s32 i_bootsType) {
    mLinkBootsType = i_bootsType;

    if (Z2GetSceneMgr()->isSceneExist()) {
        startLinkSound(Z2SE_AL_CHANGE_BOOTS, 0, -1);
    }
}

/* ############################################################################################## */
/* 803CB8F0-803CB910 028A10 0020+00 1/1 0/0 1/1 .data            __vt__15Z2SoundObjCoach */
SECTION_DATA extern void* __vt__15Z2SoundObjCoach[8] = {
    (void*)NULL /* RTTI */,
    (void*)NULL,
    (void*)framework__14Z2SoundObjBaseFUlSc,
    (void*)dispose__14Z2SoundObjBaseFv,
    (void*)stopOK__14Z2SoundObjBaseFR17Z2SoundHandlePool,
    (void*)init__15Z2SoundObjCoachFP3VecUc,
    (void*)startSound__15Z2SoundObjCoachF10JAISoundIDUlSc,
    (void*)startLevelSound__14Z2SoundObjBaseF10JAISoundIDUlSc,
};

/* 803CB910-803CB924 028A30 0014+00 3/3 0/0 0/0 .data            __vt__18Z2RideSoundStarter */
SECTION_DATA extern void* __vt__18Z2RideSoundStarter[5] = {
    (void*)NULL /* RTTI */, (void*)NULL,          (void*)__dt__18Z2RideSoundStarterFv,
    (void*)func_802AABF4,   (void*)func_802C5284,
};

/* 803CB924-803CB96C 028A44 0048+00 2/2 0/0 0/0 .data            __vt__14Z2CreatureRide */
SECTION_DATA extern void* __vt__14Z2CreatureRide[18] = {
    (void*)NULL /* RTTI */,
    (void*)NULL,
    (void*)deleteObject__14Z2CreatureRideFv,
    (void*)setSoundStarter__10Z2CreatureFP14Z2SoundStarter,
    (void*)framework__10Z2CreatureFUlSc,
    (void*)startCreatureSound__10Z2CreatureF10JAISoundIDUlSc,
    (void*)startCreatureSoundLevel__10Z2CreatureF10JAISoundIDUlSc,
    (void*)startCreatureVoice__10Z2CreatureF10JAISoundIDSc,
    (void*)startCreatureVoiceLevel__10Z2CreatureF10JAISoundIDSc,
    (void*)startCreatureExtraSound__10Z2CreatureF10JAISoundIDUlSc,
    (void*)startCreatureExtraSoundLevel__10Z2CreatureF10JAISoundIDUlSc,
    (void*)startCollisionSE__10Z2CreatureFUlUl,
    (void*)NULL,
    (void*)NULL,
    (void*)func_802C5894,
    (void*)func_802AABF4,
    (void*)func_802C5284,
    (void*)__dt__14Z2CreatureRideFv,
};

/* 803CB96C-803CB980 028A8C 0014+00 3/3 0/0 0/0 .data            __vt__18Z2LinkSoundStarter */
SECTION_DATA extern void* __vt__18Z2LinkSoundStarter[5] = {
    (void*)NULL /* RTTI */, (void*)NULL,          (void*)__dt__18Z2LinkSoundStarterFv,
    (void*)func_802AABF4,   (void*)func_802C4928,
};

/* 803CB980-803CB9C8 028AA0 0048+00 2/2 0/0 0/0 .data            __vt__14Z2CreatureLink */
SECTION_DATA extern void* __vt__14Z2CreatureLink[18] = {
    (void*)NULL /* RTTI */,
    (void*)NULL,
    (void*)deleteObject__14Z2CreatureLinkFv,
    (void*)setSoundStarter__10Z2CreatureFP14Z2SoundStarter,
    (void*)framework__14Z2CreatureLinkFUlSc,
    (void*)startCreatureSound__10Z2CreatureF10JAISoundIDUlSc,
    (void*)startCreatureSoundLevel__10Z2CreatureF10JAISoundIDUlSc,
    (void*)startCreatureVoice__10Z2CreatureF10JAISoundIDSc,
    (void*)startCreatureVoiceLevel__10Z2CreatureF10JAISoundIDSc,
    (void*)startCreatureExtraSound__10Z2CreatureF10JAISoundIDUlSc,
    (void*)startCreatureExtraSoundLevel__10Z2CreatureF10JAISoundIDUlSc,
    (void*)startCollisionSE__14Z2CreatureLinkFUlUl,
    (void*)NULL,
    (void*)NULL,
    (void*)func_802C588C,
    (void*)func_802AABF4,
    (void*)func_802C4928,
    (void*)__dt__14Z2CreatureLinkFv,
};

/* 80451360-80451368 000860 0004+04 3/3 15/15 0/0 .sbss            mLinkPtr__14Z2CreatureLink */
Z2CreatureLink* Z2CreatureLink::mLinkPtr;

/* 802C333C-802C3464 2BDC7C 0128+00 0/0 1/1 0/0 .text            __ct__14Z2CreatureLinkFv */
Z2CreatureLink::Z2CreatureLink() {
    mLinkState = 0;
    mLinkPtr = this;

    field_0xc1 = 0xFF;
    mWolfEyeOpen = false;
    mInWater = false;
    mMarkState = 0;
    mResumeAttack = false;

    setSoundStarter(this);
    mKantera.setSoundStarter(this);

    mLinkHp = 0;
    mLinkBootsType = 0;
    mKanteraState = 0;
    mLinkSwordType = 0;
    mLinkShieldType = 0;
    mFlag3 = false;
    mFlag4 = false;
    mFlag5 = false;
    mRiding = false;
    mMagnetized = false;
    mUsingIronBall = false;
}

/* 802C3464-802C3500 2BDDA4 009C+00 1/0 0/0 0/0 .text            __dt__18Z2LinkSoundStarterFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
inline asm Z2LinkSoundStarter::~Z2LinkSoundStarter() {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/__dt__18Z2LinkSoundStarterFv.s"
}
#pragma pop

/* 802C3500-802C35F8 2BDE40 00F8+00 2/1 1/1 0/0 .text            __dt__14Z2CreatureLinkFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2CreatureLink::~Z2CreatureLink() {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/__dt__14Z2CreatureLinkFv.s"
}
#pragma pop

/* 802C35F8-802C3638 2BDF38 0040+00 1/0 0/0 0/0 .text            deleteObject__14Z2CreatureLinkFv */
void Z2CreatureLink::deleteObject() {
    if (mKantera.isAlive()) {
        deleteKantera();
    }

    Z2Creature::deleteObject();
}

/* 802C3638-802C3710 2BDF78 00D8+00 0/0 1/1 0/0 .text init__14Z2CreatureLinkFP3VecP3VecP3Vec */
void Z2CreatureLink::init(Vec* param_0, Vec* param_1, Vec* param_2) {
    Z2Creature::init(param_0, param_1, param_2, 6, 1, 2);
    Z2GetAudience()->getLinkMic()->setPosPtr(getCurrentPos());

    field_0xc1 = 0xFF;
    mWolfEyeOpen = false;
    mInWater = false;
    mMarkState = 0;
    mResumeAttack = false;
    mKanteraState = 0;
    mRiding = false;
    mMagnetized = false;
    mUsingIronBall = false;
    field_0xb4 = *param_0;
    mMoveSpeed = 0;
    mMovingTime = 0;
    mSinkDepth = -1;
}

/* 802C3710-802C374C 2BE050 003C+00 0/0 1/1 0/0 .text            initKantera__14Z2CreatureLinkFP3Vec
 */
void Z2CreatureLink::initKantera(Vec* i_pos) {
    mKanteraState = 0;
    mKantera.init(i_pos, 2);
}

/* 802C374C-802C3778 2BE08C 002C+00 1/1 1/1 0/0 .text            deleteKantera__14Z2CreatureLinkFv
 */
void Z2CreatureLink::deleteKantera() {
    mKanteraState = 0;
    mKantera.deleteObject();
}

/* 802C3778-802C3780 -00001 0008+00 0/0 0/0 0/0 .text setKanteraState__14Z2CreatureLinkFUc */
void Z2CreatureLink::setKanteraState(u8 i_state) {
    mKanteraState = i_state;
}

/* ############################################################################################## */
/* 80455C98-80455C9C 004298 0004+00 9/9 0/0 0/0 .sdata2          @3721 */
SECTION_SDATA2 static f32 lit_3721 = 1.0f;

/* 80455C9C-80455CA0 00429C 0004+00 2/2 0/0 0/0 .sdata2          @3722 */
SECTION_SDATA2 static f32 lit_3722 = -1.0f;

/* 80455CA0-80455CA8 0042A0 0004+04 11/11 0/0 0/0 .sdata2          @3723 */
SECTION_SDATA2 static f32 lit_3723[1 + 1 /* padding */] = {
    0.0f,
    /* padding */
    0.0f,
};

/* 80455CA8-80455CB0 0042A8 0008+00 1/1 0/0 0/0 .sdata2          @3724 */
SECTION_SDATA2 static f64 lit_3724 = 0.5;

/* 80455CB0-80455CB8 0042B0 0008+00 1/1 0/0 0/0 .sdata2          @3725 */
SECTION_SDATA2 static f64 lit_3725 = 3.0;

/* 80455CB8-80455CC0 0042B8 0008+00 1/1 0/0 0/0 .sdata2          @3726 */
SECTION_SDATA2 static u8 lit_3726[8] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

/* 802C3780-802C3A64 2BE0C0 02E4+00 1/0 0/0 0/0 .text            framework__14Z2CreatureLinkFUlSc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::framework(u32 param_0, s8 param_1) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/framework__14Z2CreatureLinkFUlSc.s"
}
#pragma pop

/* void Z2CreatureLink::framework(u32 param_0, s8 param_1) {
    Z2Creature::framework(param_0, param_1);

    if (mKantera.isAlive()) {
        mKantera.framework(param_0, param_1);
    }

    if (field_0xc1 != -1) {
        field_0xc1++;
    }

    if (mMagnetized) {
        Z2GetSeMgr()->seStartLevel(Z2SE_WOLF_SENSE_OPEN, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
    }

    if (isInWater() && Z2GetStatusMgr()->getCameraInWaterDepthRatio() > 0.0f) {
        if (startLinkSoundLevel() && ) {

        }
    }
} */

/* 802C3A64-802C3A6C -00001 0008+00 0/0 0/0 0/0 .text            setSinkDepth__14Z2CreatureLinkFSc
 */
void Z2CreatureLink::setSinkDepth(s8 i_sinkDepth) {
    mSinkDepth = i_sinkDepth;
}

/* 802C3A6C-802C3AEC 2BE3AC 0080+00 0/0 4/4 0/0 .text            setRiding__14Z2CreatureLinkFb */
void Z2CreatureLink::setRiding(bool i_isRiding) {
    if (mRiding != i_isRiding) {
        if (i_isRiding) {
            Z2GetAudience()->setTargetVolume(0.35f, 0);
        } else {
            Z2GetAudience()->setTargetVolume(FLOAT_LABEL(lit_3723), 0);
        }

        mRiding = i_isRiding;
    }
}

/* 802C3AEC-802C3AFC 2BE42C 0010+00 0/0 5/5 0/0 .text            setMagnetized__14Z2CreatureLinkFb
 */
void Z2CreatureLink::setMagnetized(bool i_isMagnetized) {
    mMagnetized = i_isMagnetized;
}

/* 802C3AFC-802C3BD4 2BE43C 00D8+00 0/0 2/2 0/0 .text            setWolfEyeOpen__14Z2CreatureLinkFb
 */
// matches with literals
#ifdef NONMATCHING
void Z2CreatureLink::setWolfEyeOpen(bool i_wolfEyeOpen) {
    mWolfEyeOpen = i_wolfEyeOpen;

    if (mWolfEyeOpen) {
        Z2GetSeMgr()->seStart(Z2SE_WOLF_SENSE_OPEN_START, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
        Z2GetFxLineMgr()->setFxForceOff(true);
        Z2GetSoundObjMgr()->setGhostEnemyState(32);
    } else {
        Z2GetSeMgr()->seStart(Z2SE_WOLF_SENSE_CLOSE, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
        Z2GetFxLineMgr()->setFxForceOff(false);
        Z2GetSoundObjMgr()->setGhostEnemyState(16);
    }
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::setWolfEyeOpen(bool param_0) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/setWolfEyeOpen__14Z2CreatureLinkFb.s"
}
#pragma pop
#endif

/* ############################################################################################## */
/* 80455CC4-80455CC8 0042C4 0004+00 1/1 0/0 0/0 .sdata2          @3834 */
SECTION_SDATA2 static f32 lit_3834 = 32.0f;

/* 80455CC8-80455CCC 0042C8 0004+00 4/4 0/0 0/0 .sdata2          @3835 */
SECTION_SDATA2 static f32 lit_3835 = 127.0f;

/* 80455CCC-80455CD0 0042CC 0004+00 2/2 0/0 0/0 .sdata2          @3836 */
SECTION_SDATA2 static f32 lit_3836 = 2.0f / 5.0f;

/* 80455CD0-80455CD4 0042D0 0004+00 4/4 0/0 0/0 .sdata2          @3837 */
SECTION_SDATA2 static f32 lit_3837 = 7.0f / 10.0f;

/* 80455CD4-80455CD8 0042D4 0004+00 3/3 0/0 0/0 .sdata2          @3838 */
SECTION_SDATA2 static f32 lit_3838 = 23.0f;

/* 80455CD8-80455CE0 0042D8 0004+04 4/4 0/0 0/0 .sdata2          @3839 */
SECTION_SDATA2 static f32 lit_3839[1 + 1 /* padding */] = {
    0.5f,
    /* padding */
    0.0f,
};

/* 80455CE0-80455CE8 0042E0 0008+00 3/3 0/0 0/0 .sdata2          @3842 */
SECTION_SDATA2 static f64 lit_3842 = 4503601774854144.0 /* cast s32 to float */;

/* 802C3BD4-802C3E68 2BE514 0294+00 3/3 3/3 0/0 .text
 * startLinkSound__14Z2CreatureLinkF10JAISoundIDUlSc            */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::startLinkSound(JAISoundID param_0, u32 param_1, s8 param_2) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/startLinkSound__14Z2CreatureLinkF10JAISoundIDUlSc.s"
}
#pragma pop

/* ############################################################################################## */
/* 80455CE8-80455CEC 0042E8 0004+00 1/1 0/0 0/0 .sdata2          @3941 */
SECTION_SDATA2 static f32 lit_3941 = 30.0f;

/* 80455CEC-80455CF0 0042EC 0004+00 3/3 0/0 0/0 .sdata2          @3942 */
SECTION_SDATA2 static f32 lit_3942 = 3.0f / 10.0f;

/* 80455CF0-80455CF4 0042F0 0004+00 4/4 0/0 0/0 .sdata2          @3943 */
SECTION_SDATA2 static f32 lit_3943 = 4.0f / 5.0f;

/* 80455CF4-80455CF8 0042F4 0004+00 1/1 0/0 0/0 .sdata2          @3944 */
SECTION_SDATA2 static f32 lit_3944 = 180.0f;

/* 80455CF8-80455CFC 0042F8 0004+00 1/1 0/0 0/0 .sdata2          @3945 */
SECTION_SDATA2 static f32 lit_3945 = 120.0f;

/* 80455CFC-80455D00 0042FC 0004+00 4/4 0/0 0/0 .sdata2          @3946 */
SECTION_SDATA2 static f32 lit_3946 = 3.0f / 5.0f;

/* 80455D00-80455D04 004300 0004+00 1/1 0/0 0/0 .sdata2          @3947 */
SECTION_SDATA2 static f32 lit_3947 = 80.0f;

/* 80455D04-80455D08 004304 0004+00 1/1 0/0 0/0 .sdata2          @3948 */
SECTION_SDATA2 static f32 lit_3948 = 6.0f / 5.0f;

/* 80455D08-80455D0C 004308 0004+00 2/2 0/0 0/0 .sdata2          @3949 */
SECTION_SDATA2 static f32 lit_3949 = 0.25f;

/* 80455D0C-80455D10 00430C 0004+00 1/1 0/0 0/0 .sdata2          @3950 */
SECTION_SDATA2 static f32 lit_3950 = 11.0f / 10.0f;

/* 80455D10-80455D18 004310 0008+00 2/2 0/0 0/0 .sdata2          @3954 */
SECTION_SDATA2 static f64 lit_3954 = 4503599627370496.0 /* cast u32 to float */;

/* 802C3E68-802C4320 2BE7A8 04B8+00 1/1 3/3 0/0 .text
 * startLinkSoundLevel__14Z2CreatureLinkF10JAISoundIDUlSc       */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::startLinkSoundLevel(JAISoundID param_0, u32 param_1, s8 param_2) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/startLinkSoundLevel__14Z2CreatureLinkF10JAISoundIDUlSc.s"
}
#pragma pop

/* 802C4320-802C45B0 2BEC60 0290+00 1/1 1/1 0/0 .text
 * startLinkVoice__14Z2CreatureLinkF10JAISoundIDSc              */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::startLinkVoice(JAISoundID param_0, s8 param_1) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/startLinkVoice__14Z2CreatureLinkF10JAISoundIDSc.s"
}
#pragma pop

/* 802C45B0-802C46F0 2BEEF0 0140+00 0/0 1/1 0/0 .text
 * startLinkVoiceLevel__14Z2CreatureLinkF10JAISoundIDSc         */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2CreatureLink::startLinkVoiceLevel(JAISoundID param_0, s8 param_1) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/startLinkVoiceLevel__14Z2CreatureLinkF10JAISoundIDSc.s"
}
#pragma pop

/* 802C46F0-802C4784 2BF030 0094+00 0/0 2/2 0/0 .text
 * startLinkSwordSound__14Z2CreatureLinkF10JAISoundIDUlSc       */
void Z2CreatureLink::startLinkSwordSound(JAISoundID i_soundID, u32 id, s8 ch) {
    u32 soundID = i_soundID;

    switch (soundID) {
    case Z2SE_SWORD_POWER_COME:
        startCreatureExtraSoundLevel(soundID, id, ch);
        break;
    case Z2SE_WOLF_POWER_COME:
        startCreatureExtraSoundLevel(soundID, id, ch);
        break;
    default:
        startCreatureExtraSound(soundID, id, ch);
        break;
    }
}

/* 802C4784-802C4814 2BF0C4 0090+00 1/0 0/0 0/0 .text startCollisionSE__14Z2CreatureLinkFUlUl */
Z2SoundHandlePool* Z2CreatureLink::startCollisionSE(u32 hitID, u32 mapinfo) {
    switch (mapinfo) {
    case 0x28:
    case 0x29:
    case 0x2A:
        Z2GetSeqMgr()->onEnemyDamage();
        break;
    case 0x20:
        if (hitID == Z2SE_HIT_SWORD_STAB) {
            Z2GetSeqMgr()->setBattleLastHit(0x14);
        }
        break;
    }

    return mSoundObjAnime.startCollisionSE(hitID, mapinfo, NULL);
}

/* ############################################################################################## */
/* 80455D18-80455D1C 004318 0004+00 1/1 0/0 0/0 .sdata2          @4178 */
SECTION_SDATA2 static f32 lit_4178 = 100.0f;

/* 802C4814-802C48D8 2BF154 00C4+00 0/0 4/4 2/2 .text
 * startHitItemSE__14Z2CreatureLinkFUlUlP14Z2SoundObjBasef      */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int Z2CreatureLink::startHitItemSE(u32 param_0, u32 param_1, Z2SoundObjBase* param_2,
                                       f32 speed) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/startHitItemSE__14Z2CreatureLinkFUlUlP14Z2SoundObjBasef.s"
}
#pragma pop

/* 802C48D8-802C48E8 2BF218 0010+00 0/0 1/1 0/0 .text            setResumeAttack__14Z2CreatureLinkFb
 */
void Z2CreatureLink::setResumeAttack(bool i_resumeAttack) {
    mResumeAttack = i_resumeAttack;
}

/* 802C48E8-802C4928 2BF228 0040+00 1/1 0/0 0/0 .text            __ct__18Z2LinkSoundStarterFv */
Z2LinkSoundStarter::Z2LinkSoundStarter() : Z2SoundStarter(false) {}

/* ############################################################################################## */
/* 80455D1C-80455D20 00431C 0004+00 2/2 0/0 0/0 .sdata2          @4399 */
SECTION_SDATA2 static f32 lit_4399 = 9.0f / 10.0f;

/* 802C4928-802C4FFC 2BF268 06D4+00 2/0 0/0 0/0 .text
 * startSound__18Z2LinkSoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f>UlfffffUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool Z2LinkSoundStarter::startSound(JAISoundID param_0, JAISoundHandle* param_1,
                                        JGeometry::TVec3<f32> const* param_2, u32 param_3,
                                        f32 param_4, f32 param_5, f32 param_6, f32 param_7,
                                        f32 param_8, u32 param_9) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/func_802C4928.s"
}
#pragma pop

/* 802C4FFC-802C5078 2BF93C 007C+00 0/0 0/0 3/3 .text            __ct__14Z2CreatureRideFv */
Z2CreatureRide::Z2CreatureRide() : Z2RideSoundStarter(this) {
    mLinkRiding = false;

    setSoundStarter(this);
}

/* 802C5078-802C5114 2BF9B8 009C+00 1/0 0/0 0/0 .text            __dt__18Z2RideSoundStarterFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
inline asm Z2RideSoundStarter::~Z2RideSoundStarter() {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/__dt__18Z2RideSoundStarterFv.s"
}
#pragma pop

/* 802C5114-802C51EC 2BFA54 00D8+00 2/1 0/0 2/2 .text            __dt__14Z2CreatureRideFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2CreatureRide::~Z2CreatureRide() {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/__dt__14Z2CreatureRideFv.s"
}
#pragma pop

/* 802C51EC-802C520C 2BFB2C 0020+00 1/0 0/0 0/0 .text            deleteObject__14Z2CreatureRideFv */
void Z2CreatureRide::deleteObject() {
    Z2Creature::deleteObject();
}

/* 802C520C-802C522C 2BFB4C 0020+00 0/0 0/0 3/3 .text init__14Z2CreatureRideFP3VecP3VecUcUc */
void Z2CreatureRide::init(Vec* param_0, Vec* param_1, u8 param_2, u8 param_3) {
    Z2Creature::init(param_0, param_1, param_2, param_3);
}

/* 802C522C-802C5234 -00001 0008+00 0/0 0/0 0/0 .text            setLinkRiding__14Z2CreatureRideFb
 */
void Z2CreatureRide::setLinkRiding(bool isRiding) {
    mLinkRiding = isRiding;
}

/* 802C5234-802C5284 2BFB74 0050+00 1/1 0/0 0/0 .text __ct__18Z2RideSoundStarterFP14Z2CreatureRide
 */
Z2RideSoundStarter::Z2RideSoundStarter(Z2CreatureRide* ride) : Z2SoundStarter(false) {
    mRide = ride;
}

/* 802C5284-802C54B8 2BFBC4 0234+00 2/0 0/0 0/0 .text
 * startSound__18Z2RideSoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f>UlfffffUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool Z2RideSoundStarter::startSound(JAISoundID param_0, JAISoundHandle* param_1,
                                        JGeometry::TVec3<f32> const* param_2, u32 param_3,
                                        f32 param_4, f32 param_5, f32 param_6, f32 param_7,
                                        f32 param_8, u32 param_9) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/func_802C5284.s"
}
#pragma pop

/* 802C54B8-802C54FC 2BFDF8 0044+00 0/0 0/0 1/1 .text            __ct__15Z2SoundObjCoachFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2SoundObjCoach::Z2SoundObjCoach() {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/__ct__15Z2SoundObjCoachFv.s"
}
#pragma pop

/* 802C54FC-802C551C 2BFE3C 0020+00 1/0 0/0 0/0 .text            init__15Z2SoundObjCoachFP3VecUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SoundObjCoach::init(Vec* param_0, u8 param_1) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/init__15Z2SoundObjCoachFP3VecUc.s"
}
#pragma pop

/* ############################################################################################## */
/* 80455D20-80455D24 004320 0004+00 1/1 0/0 0/0 .sdata2          @4621 */
SECTION_SDATA2 static f32 lit_4621 = 2.0f;

/* 80455D24-80455D28 004324 0004+00 1/1 0/0 0/0 .sdata2          @4622 */
SECTION_SDATA2 static f32 lit_4622 = 35.0f;

/* 80455D28-80455D2C 004328 0004+00 1/1 0/0 0/0 .sdata2          @4623 */
SECTION_SDATA2 static f32 lit_4623 = 22.0f / 25.0f;

/* 80455D2C-80455D30 00432C 0004+00 3/3 0/0 0/0 .sdata2          @4624 */
SECTION_SDATA2 static f32 lit_4624 = 1.25f;

/* 80455D30-80455D34 004330 0004+00 2/2 0/0 0/0 .sdata2          @4625 */
SECTION_SDATA2 static f32 lit_4625 = 50.0f;

/* 802C551C-802C56C0 2BFE5C 01A4+00 0/0 0/0 1/1 .text startWheelSound__15Z2SoundObjCoachFf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SoundObjCoach::startWheelSound(f32 param_0) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/startWheelSound__15Z2SoundObjCoachFf.s"
}
#pragma pop

/* ############################################################################################## */
/* 80455D34-80455D38 004334 0004+00 1/1 0/0 0/0 .sdata2          @4645 */
SECTION_SDATA2 static f32 lit_4645 = 1500.0f;

/* 80455D38-80455D3C 004338 0004+00 2/2 0/0 0/0 .sdata2          @4646 */
SECTION_SDATA2 static f32 lit_4646 = 1.0f / 5.0f;

/* 80455D3C-80455D40 00433C 0004+00 2/2 0/0 0/0 .sdata2          @4647 */
SECTION_SDATA2 static f32 lit_4647 = 17.0f / 20.0f;

/* 802C56C0-802C57C0 2C0000 0100+00 0/0 0/0 1/1 .text startFireSound__15Z2SoundObjCoachFUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SoundObjCoach::startFireSound(u16 param_0) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/startFireSound__15Z2SoundObjCoachFUs.s"
}
#pragma pop

/* 802C57C0-802C588C 2C0100 00CC+00 1/0 0/0 0/0 .text
 * startSound__15Z2SoundObjCoachF10JAISoundIDUlSc               */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int Z2SoundObjCoach::startSound(JAISoundID param_0, u32 param_1, s8 param_2) {
    nofralloc
#include "asm/Z2AudioLib/Z2LinkMgr/startSound__15Z2SoundObjCoachF10JAISoundIDUlSc.s"
}
#pragma pop