123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509 |
- #include <songlist.h>
- #include <game_engine.h>
- #include <bpre.h>
- #include <battle_structs.h>
- #include <battle_common.h>
- #include <pokemon.h>
- #include <agb_debug.h>
- #include <sound.h>
- #include <config.h>
-
- #define SONG_ID_SKIP_PLAY 0xFFFF
-
- #define skip_song flag_check(FLAG_SKIP_BATTLE_MUSIC)
-
- u16 mhk_intro_music_id_to_song(u8 introid) {
- u16 res = 0;
-
- switch (introid) {
- case 0:
- res = 480;
- break;
- case 1:
- res = 480;
- break;
- case 2:
- res = 480;
- break;
- case 3:
- res = 471;
- break;
- case 4:
- res = 471;
- break;
- case 5:
- res = 480;
- break;
- case 6:
- res = 487;
- break;
- case 7:
- res = 476;
- break;
- case 8:
- res = 471;
- break;
- case 9:
- res = 471;
- break;
- case 10:
- res = 480;
- break;
- case 11:
- res = 480;
- break;
- case 12:
- res = 480;
- break;
- case 13:
- res = 480;
- break;
- case 14:
- res = 488;
- break;
- case 15:
- res = 475;
- break;
- case 16:
- res = 475;
- break;
- case 17:
- res = 470;
- break;
- case 18:
- res = 495;
- break;
- case 19:
- res = 480;
- break;
- case 20:
- res = 475;
- break;
- case 21:
- res = 481;
- break;
- case 22:
- res = 498;
- break;
- case 23:
- res = 498;
- break;
- case 24:
- res = 473;
- break;
- case 25:
- res = 473;
- break;
- case 26:
- res = 480;
- break;
- case 27:
- res = 480;
- break;
- case 28:
- res = 491;
- break;
- case 29:
- res = 488;
- break;
- case 30:
- res = 488;
- break;
- case 31:
- res = 488;
- break;
- case 32:
- res = 491;
- break;
- case 33:
- res = 490;
- break;
- case 34:
- res = 497;
- break;
- case 35:
- res = 497;
- break;
- case 36:
- res = 471;
- break;
- case 37:
- res = 492;
- break;
- case 38:
- res = 492;
- break;
- case 39:
- res = 490;
- break;
- case 40:
- res = 499;
- break;
- case 41:
- res = 491;
- break;
- case 42:
- res = 480;
- break;
- case 43:
- res = 493;
- break;
- case 44:
- res = 495;
- break;
- case 45:
- res = 495;
- break;
- case 46:
- res = 472;
- break;
- case 47:
- res = 473;
- break;
- case 48:
- res = 472;
- break;
- case 49:
- res = 480;
- break;
- case 50:
- res = 470;
- break;
- case 51:
- res = 470;
- break;
- case 52:
- res = 470;
- break;
- case 53:
- res = 494;
- break;
- case 54:
- res = 494;
- break;
- case 55:
- res = 494;
- break;
- case 56:
- res = 494;
- break;
- case 57:
- res = 494;
- break;
- case 58:
- res = 494;
- break;
- case 59:
- res = 494;
- break;
- case 60:
- res = 494;
- break;
- case 61:
- res = 494;
- break;
- case 62:
- res = 494;
- break;
- case 63:
- res = 473;
- break;
- case 64:
- res = 473;
- break;
- case 65:
- res = 470;
- break;
- case 66:
- res = 470;
- break;
- case 67:
- res = 490;
- break;
- case 68:
- res = 491;
- break;
- case 69:
- res = 490;
- break;
- case 70:
- res = 490;
- break;
- case 71:
- res = 491;
- break;
- case 72:
- res = 480;
- break;
- case 73:
- res = 495;
- break;
- case 74:
- res = 490;
- break;
- case 75:
- res = 474;
- break;
- case 76:
- res = 476;
- break;
- case 77:
- res = 476;
- break;
- case 78:
- res = 477;
- break;
- case 79:
- res = 477;
- break;
- case 80:
- res = 496;
- break;
- case 81:
- res = 475;
- break;
- case 82:
- res = 475;
- break;
- case 83:
- res = 472;
- break;
- case 84:
- res = 471;
- break;
- case 85:
- res = 494;
- break;
- case 86:
- res = 490;
- break;
- case 87:
- res = 486;
- break;
- case 88:
- res = 478;
- break;
- case 89:
- res = 472;
- break;
- case 90:
- res = 484;
- break;
- case 91:
- res = 472;
- break;
- case 92:
- res = 481;
- break;
- case 93:
- res = 485;
- break;
- case 94:
- res = 472;
- break;
- case 95:
- res = 472;
- break;
- case 96:
- res = 472;
- break;
- case 97:
- res = 470;
- break;
- case 98:
- res = 496;
- break;
- case 99:
- res = 480;
- break;
- case 100:
- res = 480;
- break;
- case 101:
- res = 481;
- break;
- case 102:
- res = 481;
- break;
- case 103:
- res = 495;
- break;
- case 104:
- res = 475;
- break;
- case 105:
- res = 471;
- break;
- case 106:
- res = 490;
- break;
- case 107:
- res = 495;
- break;
- case 108:
- res = 481;
- break;
- case 109:
- res = 495;
- break;
- case 110:
- res = 495;
- break;
- case 111:
- res = 482;
- break;
- case 112:
- res = 482;
- break;
- case 113:
- res = 483;
- break;
- case 114:
- res = 495;
- break;
- case 115:
- res = 472;
- break;
- case 116:
- res = 495;
- break;
- case 117:
- res = 482;
- break;
- case 118:
- res = 483;
- break;
- case 119:
- res = 483;
- break;
- default:
- res = SEQ_FRLG_E_1;
- break;
- }
-
- return res;
- }
-
- u16 mhk_song_id_for_battle(void) {
- u16 res = 0;
-
- if (battle_type_flags._battle_unk_3) {
- res = SEQ_BGM_VS_POKE;
- } else if (battle_type_flags._battle_unk_5 || battle_type_flags.battle_link) {
- res = SEQ_BGM_VS_RSE;
- } else if (battle_type_flags.battle_trainer) {
- switch (trainer_data[trainerbattle_flag_id].trainer_class) {
- case 88:
- res = 527;
- break;
- case 90:
- res = 528;
- break;
- case 93:
- res = 524;
- break;
- case 111:
- res = 532;
- break;
- case 112:
- res = 529;
- break;
- case 113:
- res = 530;
- break;
- case 117:
- res = 532;
- break;
- case 118:
- res = 530;
- break;
- case 119:
- res = 531;
- break;
- default:
- res = 522;
- break;
- }
- } else {
- res = 523;
- }
-
- return res;
- }
-
- // replaces 0x08044090
- void mhk_current_map_music_set_default_for_battle(u16 songid) {
- if (skip_song)
- return;
- if (songid == 0) {
- songid = mhk_song_id_for_battle();
- if (songid != SONG_ID_SKIP_PLAY) {
- current_map_music_set_to_zero();
- MPlayAllStop();
- current_map_music_set(songid);
- }
- } else {
- current_map_music_set_to_zero();
- MPlayAllStop();
- current_map_music_set(songid);
- }
- }
-
- void mhk_trainer_battle_play_defeat(void) {
- if (skip_song)
- return;
- u16 song = 0;
-
- switch (trainer_data[trainerbattle_flag_id].trainer_class) {
- case 84:
- case 90:
- song = SEQ_BGM_VIC_LEADER;
- break;
- default:
- song = SEQ_BGM_VIC_TRAINER;
- break;
- }
-
- song_play_for_text(song);
- }
-
- void mhk_wild_poke_def_music(void) {
- if (!skip_song) {
- song_play_for_text(SEQ_BGM_VIC_POKE);
- }
- }
-
- // this seems to work by special 0x138 only
- u16 mhk_species_to_song(u16 species) {
- u16 res = 0;
-
- switch (species) {
- case POKE_MEWTWO:
- res = SEQ_BGM_VS_MEWTWO;
- break;
- case POKE_ARTICUNO:
- case POKE_ZAPDOS:
- case POKE_MOLTRES:
- case POKE_LUGIA:
- case POKE_HOOH:
- res = 526;
- break;
- case POKE_DEOXYS:
- res = 525;
- break;
- default:
- res = SEQ_BGM_VS_RSE;
- break;
- }
-
- return res;
- }
-
- // hook from loc_80159D0
- void mhk_fadeout(void) {
- void (*sub_8070E44)(u8) = (void (*)(u8))(0x08070E44|1);
- sub_8070E44(3); // no idea what these values do
- if (!skip_song) {
- current_map_music_fadeout(5); // same here
- }
- }
|