====== Bank 4 ====== This is the contents of Bank 4 in a ROM map form. Bank :4 Contents :Audio Data Range :0x10000-0x13FFF 0x4000: Handle audio 0x4003: Clear sound effects and song 0x4006: Initialise sound 0x4009: Size of $CF2F..37 0x400A: Size of $CF2F..5B 0x400B: Size of $CF00..60 0x400C: Music notes 0x42B3: Handle audio 0x42C7: Handle audio - handle [$CEDE] 0x42EA: Handle audio - [$CEDE] == 0 0x42FA: Handle audio - [$CEDE] == 0 - [$CEDF] != 2 != 8 (handle song / sound effects, clear song / sound effects to play) 0x4323: $CEDE = $CEDF = 0 (clear isolated sound effect) 0x432B: Handle audio - [$CEDE] == 1 (play item-get music) 0x4335: Handle audio - [$CEDE] == 5 (play missile pickup music) 0x433F: Handle audio - [$CEDE] == Eh (play earthquake) 0x4345: Handle audio - epilogue - [$CEDE] == 1, [$CEDE] == 5 and [$CEDE] == Eh (backs up some audio state) 0x4390: Handle audio - [$CEDE] == 3 (restores some audio state) 0x43C4: Handle audio - [$CEDE] == 0 - [$CEDF] == 2 (restore some audio state) 0x43FB: Handle audio - [$CEDE] == 8 0x4418: Handle audio - [$CEDE] == 0 - [$CEDF] == 8 0x446B: Handle tone/sweep channel sound effect 0x448F: Handle tone/sweep channel sound effect playing 0x44A4: Handle tone channel sound effect 0x44CF: Handle noise channel sound effect 0x4512: Handle wave channel sound effect 0x457C: Handle song 0x45B4: Disable sound channels 0x45CD: Clear song playing 0x45D2: Handle song - song to play = 0 0x45D2: Handle song - song to play = 0 - tone/sweep channel 0x461D: Handle song - song to play = 0 - tone channel 0x465F: Handle song - song to play = 0 - wave channel 0x46A3: Handle song - song to play = 0 - noise channel 0x46DE: hl = [[hl] + ([a] - 1) * 2] 0x46EA: Decrement tone/sweep channel sound effect timer or clear tone/sweep channel sound effect 0x46F5: Clear tone/sweep channel sound effect 0x46F7: Decrement tone channel sound effect timer or clear tone channel sound effect 0x4702: Clear tone channel sound effect;;; 0x4704: Decrement noise channel sound effect timer or clear noise channel sound effect 0x470F: Clear noise channel sound effect 0x4711: Decrement a or clear sound effects and song 0x4716: Clear tone/sweep channel sound effect 0x471D: Disable tone/sweep channel 0x4727: Clear tone channel sound effect 0x472E: Disable tone channel 0x4738: Clear low health beep 0x473C: Disable wave channel 0x4741: Clear noise channel sound effect 0x4748: Disable noise channel 0x4752: Initialise sound 0x476A: Clear sound effects to play 0x477B: Clear sound effects and song 0x479D: Clear some sound effects and song 0x47B3: Disable sound FX 0x47C9: Write [[de]..[de]+Fh] to wave pattern RAM 0x47D9: Set tone/sweep channel registers to [[de]..[de]+4] 0x47E1: Set tone channel registers to [[de]..[de]+3] 0x47E9: Set wave channel registers to [[de]..[de]+4] 0x47F1: Set noise channel registers to [[de]..[de]+3] 0x47F9: Copy [b] bytes from [de] to [hl] and pop hl 0x4801: Handle - [$CFC7] = 1 0x4819: Set noise channel registers to [[de]..[de]+3] and clear sound effects to play 0x481F: Set noise channel registers to [$4880..83] and clear sound effects to play 0x4824: Set noise channel registers to [$488E..91] and clear sound effects to play 0x4829: Set noise channel registers to [$4897..9A] and clear sound effects to play 0x482E: Set tone/sweep channel registers to [$4884..88] and clear sound effects to play 0x4831: Set tone/sweep channel registers to [[de]..[de]+4] and clear sound effects to play 0x4837: Set tone/sweep channel registers to [$4889..8D] and clear sound effects to play 0x483C: Set tone/sweep channel registers to [$4892..96] and clear sound effects to play 0x4841: Set tone/sweep channel registers to [$489B..9F] and clear sound effects to play 0x4846: Handle audio - [$CFC7] = 2 0x4852: Handle audio - [$CFC8] != 0 0x487C: Channel registers 0x48A0: Load song header 0x497A: Handle song - tone/sweep channel 0x49F3: Handle song - tone channel 0x4A81: Handle song - wave channel 0x4AF6: Handle song - noise channel 0x4B47: Load next sound 0x4CB7: Song instruction - F1h: Set working sound channel options 0x4CE2: $CF37 = [a], a = [[++hl]] 0x4CE9: a = [[++hl]] 0x4CEA: a = [[hl]] 0x4CEC: Song instruction - F1h - wave channel: Set wave channel options 0x4D25: Song instruction - F2h: set $CF01 0x4D30: Song instruction - F3h: set music note offset 0x4D37: hl = $CF2F = [[hl] + 2] 0x4D45: Song instruction - F4h: repeat point 0x4D54: Song instruction - F5h: repeat 0x4D68: Copy 9 bytes from [de] to [hl] 0x4D75: Handle $CF37 0x4DC4: Handle $CF37 - [$CF37] == 2 0x4DC9: Handle $CF37 - [$CF37] == 3 0x4DCE: Handle $CF37 - [$CF37] == 4 0x4DD3: Handle $CF37 - [$CF37] == 9 0x4DD8: Handle $CF37 - [$CF37] == Ah 0x4DDD: Handle $CF37 - [$CF37] == 6: working sound channel's frequency += 1 0x4DEA: Set working channel's frequency 0x4E21: Handle $CF37 - [$CF37] == 7: working sound channel's frequency += 4 0x4E33: Handle $CF37 - [$CF37] == 8: working sound channel's frequency -= 3 0x4E44: Reset tone/sweep channel options 0x4E59: Reset tone channel options 0x4E6E: Reset wave channel options 0x4E7B: Reset noise channel options 0x4E8E: Reset song options 0x4EC4: Jump table for tone/sweep channel sound effect to play 0x4F00: Jump table for tone/sweep channel sound effect playing 0x4F3C: Play short jump sound 0x4F44: Playing short jump sound 0x4F4C: Tone/sweep sound effect to play - 1: jumping 0x4F6C: Tone/sweep sound effect playing - 1: jumping 0x4FB9: Tone/sweep sound effect to play - 2: hi-jumping 0x4FD9: Tone/sweep sound effect playing - 2: hi-jumping 0x5030: Tone/sweep sound effect to play - 3: screw attacking 0x5038: Tone/sweep sound effect playing - 3: screw attacking 0x50D5: Tone/sweep sound effect to play - 4: uncrouching / turning around / landing 0x50E5: Tone/sweep sound effect playing - 4: uncourching / turning around / landing 0x50FD: Tone/sweep sound effect to play - 5: courching / unmorphing 0x5105: Tone/sweep sound effect playing - 5: courching / unmorphing 0x511D: Tone/sweep sound effect to play - 6: morphing 0x5125: Tone/sweep sound effect playing - 6: morphing 0x5147: Tone/sweep sound effect to play - 7: shooting beam 0x514F: Tone/sweep sound effect playing - 7: shooting beam 0x5187: Tone/sweep sound effect to play - 8: shooting missile 0x518F: Tone/sweep sound effect playing - 8: shooting missile 0x51ED: Tone/sweep sound effect to play - 9: shooting ice beam 0x51FA: Tone/sweep sound effect playing - 9: shooting ice beam 0x5206: Tone/sweep sound effect to play - Ah: shooting plasma beam 0x5213: Tone/sweep sound effect playing - Ah: shooting plasma beam 0x521F: Tone/sweep sound effect to play - Bh: shooting spazer beam 0x522C: Tone/sweep sound effect playing - Bh: shooting spazer beam 0x5238: Tone/sweep sound effect to play - Ch: picking up missile drop 0x5240: Tone/sweep sound effect playing - Ch: picking up missile drop 0x5270: Tone/sweep sound effect to play - Dh: spider ball 0x5278: Tone/sweep sound effect playing - Dh: spider ball 0x5284: Tone/sweep sound effect to play - Eh: picked up energy drop 0x528F: Tone/sweep sound effect playing - Eh: picked up energy drop 0x52B6: Tone/sweep sound effect to play - Fh: shot missile door with beam 0x52BE: Tone/sweep sound effect playing - Fh: shot missile door with beam 0x52CC: Tone/sweep sound effect to play - 10h: 0x52D4: Tone/sweep sound effect playing - 10h: 0x533C: Tone/sweep sound effect to play - 12h: 0x5343: Tone/sweep sound effect to play - 13h: bomb laid 0x534B: Tone/sweep sound effect to play - 14h: 0x5353: Tone/sweep sound effect playing - 14h: 0x5361: Tone/sweep sound effect to play - 15h: option select / missile select 0x5369: Tone/sweep sound effect playing - 15h: option select / missile select 0x5377: Tone/sweep sound effect to play - 16h: shooting wave beam 0x537F: Tone/sweep sound effect playing - 16h: shooting wave beam 0x53B7: Tone/sweep sound effect to play - 17h: 0x53C2: Tone/sweep sound effect playing - 17h: 0x53F7: Tone/sweep sound effect to play - 18h: Samus' health changed 0x5429: Tone/sweep sound effect to play - 19h: no missile dud shot 0x5431: Tone/sweep sound effect playing - 19h: no missile dud shot 0x543F: Tone/sweep sound effect to play - 1Ah: 0x5447: Tone/sweep sound effect playing - 1Ah: 0x5497: Tone/sweep sound effect to play - 1Bh: metroid cry 0x54AE: Tone/sweep sound effect playing - 1Bh: metroid cry 0x54CE: Tone/sweep sound effect to play - 1Ch: saved 0x54D6: Tone/sweep sound effect playing - 1Ch: saved 0x54EE: Tone/sweep sound effect to play - 1Dh: 0x54F6: Tone/sweep sound effect playing - 1Dh: 0x551C: Tone/sweep sound effect to play - 1Eh: unpaused 0x5524: Tone/sweep sound effect playing - 1Eh: unpaused 0x55E3: Set tone/sweep sound effect to play as playing with timer [a] and channel registers [[de]..[de]+4] 0x55F2: Jump table for tone channel sound effect to play 0x5600: Jump table for tone channel sound effect playing 0x560E: Tone channel sound effect to play - 3: Metroid Queen cry 0x5623: Tone channel sound effect playing - 3: Metroid Queen cry / 5: Baby Metroid cry / 6: Metroid Queen hurt cry 0x5658: Tone channel sound effect to play - 4: Baby Metroid hatched / clearing blocks 0x5669: Tone channel sound effect playing - 4: Baby Metroid hatched / clearing blocks 0x568B: Tone channel sound effect to play - 5: Baby Metroid cry 0x56A2: Tone channel sound effect to play - 6: Metroid Queen hurt cry 0x56B5: Tone channel sound effect to play - 7: 0x56BD: Set tone sound effect to play as playing with timer [a] and channel registers [[de]..[de]+3] 0x56CC: Jump table for environmental sound effect to play 0x5700: Jump table for environmental sound effect playing 0x5734: Environmental sound effect to play - 1: enemy shot 0x573C: Environmental sound effect to play - 2: enemy killed 0x5744: Environmental sound effect playing - 2: enemy killed 0x5752: Environmental sound effect to play - 3: 0x575A: Environmental sound effect to play - 4: shot block destroyed 0x5762: Environmental sound effect to play - 5: metroid hurt 0x576F: Environmental sound effect playing - 6: metroid hurt 0x577D: Environmental sound effect to play - 6: Samus hurt 0x5785: Environmental sound effect playing - 6: Samus hurt 0x57A1: Environmental sound effect to play - 7: acid damage 0x57A9: Environmental sound effect playing - 7: acid damage 0x57B1: Environmental sound effect to play - 8: shot missile door with missile 0x57B9: Environmental sound effect playing - 8: shot missile door with missile 0x57C7: Environmental sound effect to play - 9: Queen Metroid cry 0x57D4: Environmental sound effect playing - 9: Queen Metroid cry 0x57E2: Environmental sound effect to play - Ah: Queen Metroid hurt cry 0x57EF: Environmental sound effect playing - Ah: Queen Metroid hurt cry 0x57FD: Environmental sound effect to play - Bh: Samus killed 0x5805: Environmental sound effect playing - Bh: Samus killed 0x5881: Environmental sound effect to play - Ch: bomb detonated 0x5889: Environmental sound effect playing - Ch: bomb detonated 0x5897: Environmental sound effect to play - Dh: metroid killed 0x589F: Environmental sound effect playing - Dh: metroid killed 0x58C5: Environmental sound effect to play - Eh: 0x58CD: Environmental sound effect playing - Eh: 0x590C: Environmental sound effect to play - Fh: 0x5914: Environmental sound effect playing - Fh: 0x5954: Environmental sound effect to play - 10h: footsteps 0x596A: Environmental sound effect playing - 10h: footsteps 0x5979: Environmental sound effect to play - 11h: 0x5981: Environmental sound effect playing - 11h: / 12h: / 13h: 0x598F: Environmental sound effect to play - 12h: 0x5997: Environmental sound effect to play - 13h: 0x599F: Environmental sound effect to play - 14h: 0x59A7: Environmental sound effect playing - 14h: 0x59C3: Environmental sound effect to play - 15h: 0x59CB: Environmental sound effect playing - 15h: 0x59D9: Environmental sound effect to play - 16h: Baby Metroid hatched / clearing blocks 0x59E6: Environmental sound effect to play - 17h: Baby Metroid cry 0x59F3: Environmental sound effect to play - 18h: 0x59FB: Environmental sound effect playing - 18h: 0x5A09: Environmental sound effect to play - 19h: 0x5A11: Environmental sound effect to play - 1Ah: 0x5A19: Set noise sound effect to play as playing with timer [a] and channel registers [[de]..[de]+3] 0x5A28: Tone/sweep channel registers 0x5C7B: Noise channel registers 0x5D2B: Tone channel registers 0x5D3F: Wave channel sound effect to play jump table 0x5D49: Wave channel sound effect playing jump table 0x5D53: Wave channel sound effect to play - 1/2: Samus' health < 30 0x5D69: Wave channel sound effect playing - 1/2: Samus' health < 30 0x5DBE: Wave channel sound effect to play - 3: Samus' health < 40 0x5DD4: Wave channel sound effect playing - 3: Samus' health < 40 0x5E29: Wave channel sound effect to play - 4: Samus' health < 50 0x5E3F: Wave channel sound effect playing - 4: Samus' health < 50 0x5E94: Wave channel sound effect to play - 5: 0x5EAA: Wave channel sound effect playing - 5: 0x5EFF: Wave channel registers 0x5F27: $CFE8 = $CFE9 = [a] and set wave channel registers to [[de]..[de]+4] 0x5F30: Song data table 0x5F70: Audio channel output stereo flags for song to play 0x5F90: Song data: 1 - Baby Metroid 0x5F90: Song data header: 1 - Baby Metroid 0x5F9B: Song data: 1 - Baby Metroid: tone/sweep channel instruction pointer list 0x5FB3: Song data: 1 - Baby Metroid: tone channel instruction pointer list 0x5FCB: Song data: 1 - Baby Metroid: wave channel instruction pointer list 0x5FDB: Song data: 1 - Baby Metroid: noise channel instruction pointer list 0x608A: Song data: 2 - Metroid Queen battle 0x61D4: Song data: 3 - Chozo ruins 0x64ED: Song data: 4 - Main caves 0x685F: Song data: 5 - Sub caves 1 0x68EE: Song data: 6 - Sub caves 2 0x6988: Song data: 7 - Sub caves 3 0x6AE2: Song data: 8 - Final caves 0x6BC3: Song data: 9 - Metroid hive 0x6C8E: Song data: Ah - Item-get 0x6D51: Song data: Bh - Metroid Queen hallway 0x6D8B: Song data: Ch - Metroid battle 0x6ED5: Song data: Dh - Sub caves 4 0x6F50: Song data: Eh - Earthquake 0x6FA4: Song data: Fh - Killed Metroid 0x4769: Song data: 10h - Nothing 0x703C: Song data: 11h - Title 0x7427: Song data: 12h - Samus fanfare 0x748A: Song data: 13h - Reach the gunship 0x61D4: Song data: 14h - Chozo ruins, same as 3 0x7C3A: Song data: 15h - Main caves, no intro 0x7C45: Song data: 16h - Sub caves 1, no intro 0x7C50: Song data: 17h - Sub caves 2, no intro 0x7C5B: Song data: 18h - Sub caves 3, no intro 0x6AE2: Song data: 19h - Final caves, same as 8 0x6BC3: Song data: 1Ah - Metroid hive, same as 9 0x6C8E: Song data: 1Bh - Item-get, same as Ah 0x6D51: Song data: 1Ch - Metroid Queen hallway, same as Bh 0x6D8B: Song data: 1Dh - Metroid battle, same as Ch 0x7C66: Song data: 1Eh - Sub caves 4, no intro 0x7C71: Song data: 1Fh - Metroid hive with intro 0x7D09: Song data: 20h - Missile pickup 0x7D09: Song data header: 20h - Missile pickup 0x7D14: Song data: 20h - Missile pickup: tone/sweep channel instruction pointer list 0x7D18: Song data: 20h - Missile pickup: tone channel instruction pointer list 0x7D1C: Song data: 20h - Missile pickup: wave channel instruction pointer list 0x7E2B: Free space