Nessuna descrizione

battle_music_lookup.c 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509
  1. #include <constants/pymap/songs.h>
  2. #include <game_engine.h>
  3. #include <bpre.h>
  4. #include <battle_structs.h>
  5. #include <battle_common.h>
  6. #include <pokemon.h>
  7. #include <agb_debug.h>
  8. #include <config/core.h>
  9. #include <pokeagb/core/m4a.h>
  10. #define SONG_ID_SKIP_PLAY 0xFFFF
  11. #define skip_song flag_check(FLAG_SKIP_BATTLE_MUSIC)
  12. u16 mhk_intro_music_id_to_song(u8 introid) {
  13. u16 res = 0;
  14. switch (introid) {
  15. case 0:
  16. res = 480;
  17. break;
  18. case 1:
  19. res = 480;
  20. break;
  21. case 2:
  22. res = 480;
  23. break;
  24. case 3:
  25. res = 471;
  26. break;
  27. case 4:
  28. res = 471;
  29. break;
  30. case 5:
  31. res = 480;
  32. break;
  33. case 6:
  34. res = 487;
  35. break;
  36. case 7:
  37. res = 476;
  38. break;
  39. case 8:
  40. res = 471;
  41. break;
  42. case 9:
  43. res = 471;
  44. break;
  45. case 10:
  46. res = 480;
  47. break;
  48. case 11:
  49. res = 480;
  50. break;
  51. case 12:
  52. res = 480;
  53. break;
  54. case 13:
  55. res = 480;
  56. break;
  57. case 14:
  58. res = 488;
  59. break;
  60. case 15:
  61. res = 475;
  62. break;
  63. case 16:
  64. res = 475;
  65. break;
  66. case 17:
  67. res = 470;
  68. break;
  69. case 18:
  70. res = 495;
  71. break;
  72. case 19:
  73. res = 480;
  74. break;
  75. case 20:
  76. res = 475;
  77. break;
  78. case 21:
  79. res = 481;
  80. break;
  81. case 22:
  82. res = 498;
  83. break;
  84. case 23:
  85. res = 498;
  86. break;
  87. case 24:
  88. res = 473;
  89. break;
  90. case 25:
  91. res = 473;
  92. break;
  93. case 26:
  94. res = 480;
  95. break;
  96. case 27:
  97. res = 480;
  98. break;
  99. case 28:
  100. res = 491;
  101. break;
  102. case 29:
  103. res = 488;
  104. break;
  105. case 30:
  106. res = 488;
  107. break;
  108. case 31:
  109. res = 488;
  110. break;
  111. case 32:
  112. res = 491;
  113. break;
  114. case 33:
  115. res = 490;
  116. break;
  117. case 34:
  118. res = 497;
  119. break;
  120. case 35:
  121. res = 497;
  122. break;
  123. case 36:
  124. res = 471;
  125. break;
  126. case 37:
  127. res = 492;
  128. break;
  129. case 38:
  130. res = 492;
  131. break;
  132. case 39:
  133. res = 490;
  134. break;
  135. case 40:
  136. res = 499;
  137. break;
  138. case 41:
  139. res = 491;
  140. break;
  141. case 42:
  142. res = 480;
  143. break;
  144. case 43:
  145. res = 493;
  146. break;
  147. case 44:
  148. res = 495;
  149. break;
  150. case 45:
  151. res = 495;
  152. break;
  153. case 46:
  154. res = 472;
  155. break;
  156. case 47:
  157. res = 473;
  158. break;
  159. case 48:
  160. res = 472;
  161. break;
  162. case 49:
  163. res = 480;
  164. break;
  165. case 50:
  166. res = 470;
  167. break;
  168. case 51:
  169. res = 470;
  170. break;
  171. case 52:
  172. res = 470;
  173. break;
  174. case 53:
  175. res = 494;
  176. break;
  177. case 54:
  178. res = 494;
  179. break;
  180. case 55:
  181. res = 494;
  182. break;
  183. case 56:
  184. res = 494;
  185. break;
  186. case 57:
  187. res = 494;
  188. break;
  189. case 58:
  190. res = 494;
  191. break;
  192. case 59:
  193. res = 494;
  194. break;
  195. case 60:
  196. res = 494;
  197. break;
  198. case 61:
  199. res = 494;
  200. break;
  201. case 62:
  202. res = 494;
  203. break;
  204. case 63:
  205. res = 473;
  206. break;
  207. case 64:
  208. res = 473;
  209. break;
  210. case 65:
  211. res = 470;
  212. break;
  213. case 66:
  214. res = 470;
  215. break;
  216. case 67:
  217. res = 490;
  218. break;
  219. case 68:
  220. res = 491;
  221. break;
  222. case 69:
  223. res = 490;
  224. break;
  225. case 70:
  226. res = 490;
  227. break;
  228. case 71:
  229. res = 491;
  230. break;
  231. case 72:
  232. res = 480;
  233. break;
  234. case 73:
  235. res = 495;
  236. break;
  237. case 74:
  238. res = 490;
  239. break;
  240. case 75:
  241. res = 474;
  242. break;
  243. case 76:
  244. res = 476;
  245. break;
  246. case 77:
  247. res = 476;
  248. break;
  249. case 78:
  250. res = 477;
  251. break;
  252. case 79:
  253. res = 477;
  254. break;
  255. case 80:
  256. res = 496;
  257. break;
  258. case 81:
  259. res = 475;
  260. break;
  261. case 82:
  262. res = 475;
  263. break;
  264. case 83:
  265. res = 472;
  266. break;
  267. case 84:
  268. res = 471;
  269. break;
  270. case 85:
  271. res = 494;
  272. break;
  273. case 86:
  274. res = 490;
  275. break;
  276. case 87:
  277. res = 486;
  278. break;
  279. case 88:
  280. res = 478;
  281. break;
  282. case 89:
  283. res = 472;
  284. break;
  285. case 90:
  286. res = 484;
  287. break;
  288. case 91:
  289. res = 472;
  290. break;
  291. case 92:
  292. res = 481;
  293. break;
  294. case 93:
  295. res = 485;
  296. break;
  297. case 94:
  298. res = 472;
  299. break;
  300. case 95:
  301. res = 472;
  302. break;
  303. case 96:
  304. res = 472;
  305. break;
  306. case 97:
  307. res = 470;
  308. break;
  309. case 98:
  310. res = 496;
  311. break;
  312. case 99:
  313. res = 480;
  314. break;
  315. case 100:
  316. res = 480;
  317. break;
  318. case 101:
  319. res = 481;
  320. break;
  321. case 102:
  322. res = 481;
  323. break;
  324. case 103:
  325. res = 495;
  326. break;
  327. case 104:
  328. res = 475;
  329. break;
  330. case 105:
  331. res = 471;
  332. break;
  333. case 106:
  334. res = 490;
  335. break;
  336. case 107:
  337. res = 495;
  338. break;
  339. case 108:
  340. res = 481;
  341. break;
  342. case 109:
  343. res = 495;
  344. break;
  345. case 110:
  346. res = 495;
  347. break;
  348. case 111:
  349. res = 482;
  350. break;
  351. case 112:
  352. res = 482;
  353. break;
  354. case 113:
  355. res = 483;
  356. break;
  357. case 114:
  358. res = 495;
  359. break;
  360. case 115:
  361. res = 472;
  362. break;
  363. case 116:
  364. res = 495;
  365. break;
  366. case 117:
  367. res = 482;
  368. break;
  369. case 118:
  370. res = 483;
  371. break;
  372. case 119:
  373. res = 483;
  374. break;
  375. default:
  376. res = 283;
  377. break;
  378. }
  379. return res;
  380. }
  381. u16 mhk_song_id_for_battle(void) {
  382. u16 res = 0;
  383. if (battle_type_flags._battle_unk_3) {
  384. res = SEQ_BGM_VS_POKE;
  385. } else if (battle_type_flags._battle_unk_5 || battle_type_flags.battle_link) {
  386. res = 266;
  387. } else if (battle_type_flags.battle_trainer) {
  388. switch (trainer_data[trainerbattle_flag_id].trainer_class) {
  389. case 88:
  390. res = 527;
  391. break;
  392. case 90:
  393. res = 528;
  394. break;
  395. case 93:
  396. res = 524;
  397. break;
  398. case 111:
  399. res = 532;
  400. break;
  401. case 112:
  402. res = 529;
  403. break;
  404. case 113:
  405. res = 530;
  406. break;
  407. case 117:
  408. res = 532;
  409. break;
  410. case 118:
  411. res = 530;
  412. break;
  413. case 119:
  414. res = 531;
  415. break;
  416. default:
  417. res = 522;
  418. break;
  419. }
  420. } else {
  421. res = 523;
  422. }
  423. return res;
  424. }
  425. // replaces 0x08044090
  426. void mhk_current_map_music_set_default_for_battle(u16 songid) {
  427. if (skip_song)
  428. return;
  429. if (songid == 0) {
  430. songid = mhk_song_id_for_battle();
  431. if (songid != SONG_ID_SKIP_PLAY) {
  432. current_map_music_set_to_zero();
  433. MPlayAllStop();
  434. current_map_music_set(songid);
  435. }
  436. } else {
  437. current_map_music_set_to_zero();
  438. MPlayAllStop();
  439. current_map_music_set(songid);
  440. }
  441. }
  442. void mhk_trainer_battle_play_defeat(void) {
  443. if (skip_song)
  444. return;
  445. u16 song = 0;
  446. switch (trainer_data[trainerbattle_flag_id].trainer_class) {
  447. case 84:
  448. case 90:
  449. song = 312;
  450. break;
  451. default:
  452. song = 310;
  453. break;
  454. }
  455. song_play_for_text(song);
  456. }
  457. void mhk_wild_poke_def_music(void) {
  458. if (!skip_song) {
  459. song_play_for_text(SEQ_BGM_VIC_POKE);
  460. }
  461. }
  462. // this seems to work by special 0x138 only
  463. u16 mhk_species_to_song(u16 species) {
  464. u16 res = 0;
  465. switch (species) {
  466. case POKE_MEWTWO:
  467. res = 340;
  468. break;
  469. case POKE_ARTICUNO:
  470. case POKE_ZAPDOS:
  471. case POKE_MOLTRES:
  472. case POKE_LUGIA:
  473. case POKE_HOOH:
  474. res = 526;
  475. break;
  476. case POKE_DEOXYS:
  477. res = 525;
  478. break;
  479. default:
  480. res = 266;
  481. break;
  482. }
  483. return res;
  484. }
  485. // hook from loc_80159D0
  486. void mhk_fadeout(void) {
  487. void (*sub_8070E44)(u8) = (void (*)(u8))(0x08070E44|1);
  488. sub_8070E44(3); // no idea what these values do
  489. if (!skip_song) {
  490. current_map_music_fadeout(5); // same here
  491. }
  492. }