diff --git a/patches/ips/pause_menu_objectives.ips b/patches/ips/pause_menu_objectives.ips new file mode 100644 index 0000000000..9b16f7c43e Binary files /dev/null and b/patches/ips/pause_menu_objectives.ips differ diff --git a/patches/patch_manifest.json b/patches/patch_manifest.json index 0076a8fb6e..9281d9569e 100644 --- a/patches/patch_manifest.json +++ b/patches/patch_manifest.json @@ -1 +1 @@ -{"ultra_low_qol_saveload": [[32768, 32771], [32901, 32904], [39495, 39499], [39506, 39510], [39521, 39524], [40110, 40114], [40126, 40129], [61216, 61635]], "gray_doors": [[91748, 91752], [133287, 133290], [145996, 146045], [152379, 152387], [162304, 162631], [493122, 493124], [493127, 493128], [505420, 505422], [521984, 521998], [1079552, 1079667], [1181322, 1181326], [1217869, 1217875], [1240563, 1240569], [1258129, 1258141], [1291124, 1291128], [1301826, 1301832], [1397690, 1397696], [1406931, 1406945], [1679396, 1679400]], "no_beeping": [[551570, 551574], [551584, 551588], [553788, 553792], [583386, 583390]], "elevators_speed": [[1152385, 1152410], [1152432, 1152433], [1152466, 1152467], [1152492, 1152493], [1176352, 1176395]], "spin_lock": [[169984, 170024], [557488, 557492]], "rng_fix": [[91754, 91764], [112384, 112571]], "disable_map_icons": [[79474, 79475], [80688, 80689]], "respin": [[555392, 555423], [558180, 558254], [564962, 567310], [567348, 567350], [567412, 567540], [567548, 569358], [588953, 588958]], "etank_refill_full": [[133490, 133493], [160896, 160906]], "alternate_door_colors": [[68908, 68911], [91282, 91285], [92112, 92115], [96768, 96876]], "fix_kraid_hud": [[89629, 89632], [97200, 97263]], "hyper_beam": [[146734, 146739], [146776, 146781], [146832, 146837], [148822, 148825], [148853, 148856], [151272, 151275], [151356, 151359], [151413, 151416], [162048, 162134]], "max_ammo_display_fast": [[6625, 6646], [6857, 6871], [6938, 6941], [6952, 6955], [7168, 7171], [19872, 20359], [165969, 165975], [166033, 166039], [166225, 166231], [166291, 166295], [166479, 166483], [166543, 166547], [865602, 865664], [865728, 865887], [865937, 865984]], "oob_death": [[20800, 20888], [68527, 68531]], "escape_autosave": [[19019, 19033], [109926, 109938], [162880, 162974], [515494, 515496], [515498, 515502], [515508, 515510], [522240, 522380], [1111552, 1111587], [1345262, 1345266], [1345338, 1345341], [1356279, 1356282], [1375552, 1375637]], "escape_timer": [[551176, 551179], [555264, 555277], [1125319, 1125322], [1125525, 1125526]], "fast_mother_brain_cutscene": [[1346931, 1346934], [1346949, 1346952], [1346990, 1346993], [1350957, 1350959], [1350961, 1350963], [1355527, 1355529], [1355598, 1355600], [1355715, 1355717], [1355789, 1355791], [1356190, 1356193], [1356210, 1356212], [1358598, 1358618], [1359565, 1359568], [1359646, 1359649], [1359945, 1359955], [1375488, 1375506]], "fix_hyper_slowlock": [[170752, 170780], [583172, 583178]], "vanilla_bugfixes": [[11817, 11820], [17523, 17526], [17532, 17535], [20992, 21014], [68842, 68845], [77824, 77826], [78196, 78199], [79044, 79047], [88960, 88963], [97264, 97320], [131880, 131883], [131939, 131955], [132492, 132517], [132887, 132891], [134412, 134415], [144852, 144855], [157902, 157903], [159234, 159235], [207101, 207104], [210692, 210695], [570921, 570922], [1051365, 1051368], [1079328, 1079340], [1372012, 1372032], [1394972, 1394974], [1719715, 1719717]], "nothing_item": [[161536, 161570]], "escape_items": [[133378, 133381], [133417, 133420], [133456, 133459], [160512, 160525], [386607, 386610], [391008, 391018], [1363218, 1363222], [1375088, 1375122]], "walljump_item": [[159744, 159984], [164432, 164435], [164436, 164439], [164593, 164596], [164598, 164601], [169648, 169898], [532043, 532053], [532076, 532086]], "constants": [], "saveload": [[32768, 32771], [32901, 32904], [39495, 39499], [39506, 39510], [39521, 39524], [40110, 40114], [40126, 40129], [61216, 61622], [516865, 516868], [516880, 516883], [523840, 523854]], "stats": [[843, 846], [861, 864], [1109, 1113], [1203, 1208], [1885, 1887], [4003, 4031], [5513, 5516], [5605, 5625], [5634, 5639], [21056, 21250], [65959, 65961], [89237, 89243], [134405, 134409], [155830, 155832], [155867, 155869], [155904, 155906], [155941, 155943], [155986, 155988], [156032, 156034], [156078, 156080], [156124, 156126], [156170, 156172], [156216, 156218], [156262, 156264], [156308, 156310], [156360, 156362], [156413, 156415], [156464, 156466], [156509, 156511], [156555, 156557], [156600, 156602], [156646, 156648], [156692, 156694], [156738, 156740], [156786, 156788], [156836, 156838], [156886, 156888], [156936, 156938], [156994, 156996], [157053, 157055], [157112, 157114], [157171, 157173], [157230, 157232], [157298, 157300], [157357, 157359], [157416, 157418], [157477, 157479], [157543, 157545], [157607, 157609], [157665, 157667], [157724, 157726], [157782, 157784], [157841, 157843], [157900, 157902], [157959, 157961], [158013, 158015], [158069, 158071], [158125, 158127], [158181, 158183], [158245, 158247], [158310, 158312], [158375, 158377], [158440, 158442], [158505, 158507], [158570, 158572], [158635, 158637], [158700, 158702], [158767, 158769], [158839, 158841], [158909, 158911], [158973, 158975], [159038, 159040], [159102, 159104], [159167, 159169], [159232, 159234], [159297, 159299], [161584, 161778], [170368, 170522], [364907, 364909], [549106, 549112], [1125139, 1125143], [1125180, 1125184]], "aim_anything": [[95690, 95691], [557556, 557720]], "all_items_spawn": [[498358, 498360], [499397, 499399], [510388, 510390], [510676, 510678], [511053, 511055], [511438, 511440], [511511, 511513], [511590, 511592]], "map_area": [[1423, 1426], [1447, 1450], [1481, 1484], [1510, 1513], [6283, 6563], [7132, 7135], [7615, 7655], [8724, 8727], [65635, 65639], [66292, 66309], [68932, 68935], [69255, 69272], [69319, 69336], [69691, 69694], [69898, 69901], [69925, 69928], [69936, 69939], [69978, 69981], [70144, 70147], [70155, 70158], [70199, 70202], [70491, 70494], [70506, 70509], [70683, 70686], [70720, 70723], [70773, 70776], [70957, 70960], [71010, 71013], [71211, 71214], [73255, 73260], [73272, 73275], [73429, 73432], [73473, 73476], [75322, 75325], [75352, 75355], [75382, 75385], [75412, 75415], [75688, 75691], [75718, 75721], [75748, 75751], [75778, 75781], [89728, 89735], [90041, 90045], [90615, 90618], [90654, 90657], [91242, 91244], [91250, 91252], [91272, 91282], [91298, 91301], [91497, 91500], [92004, 92007], [92105, 92112], [96015, 96763], [98302, 98304], [134289, 134292], [143772, 143775], [164176, 164201], [164902, 164918], [306018, 306022], [306026, 306030], [306034, 306038], [306043, 306047], [306181, 306185], [306189, 306193], [306197, 306201], [306206, 306210], [510220, 510223], [534513, 534516], [534974, 534977], [535155, 535158], [535160, 535163], [535293, 535296], [535370, 535376], [535382, 535385], [1294906, 1294923], [1296267, 1296270], [1296272, 1296275], [1296305, 1296308], [1296310, 1296313], [1296343, 1296346], [1296348, 1296351], [1296381, 1296384], [1296386, 1296389], [1297019, 1297021], [1297047, 1297049], [1310656, 1310664], [1798194, 1798200], [3407872, 3408175]], "decompression": [[12543, 12868]], "zebes_asleep_music": [[89930, 89933], [97920, 98040]], "ultra_low_qol_new_game": [[17633, 17647], [65565, 65569], [65639, 65643], [93914, 93915], [1110544, 1110633]], "sram_check_disable": [[0, 2]], "reserve_hud": [[5736, 5739], [6896, 6899], [6990, 6996], [21312, 22304], [68939, 68942], [70556, 70559], [77529, 77532], [77622, 77638], [91651, 91654], [98048, 98056], [98096, 98172], [133510, 133513], [160912, 160922], [263132, 263136], [3228464, 3228480], [3228768, 3228784], [3228864, 3228896], [3261232, 3261248], [3261536, 3261552], [3261632, 3261664], [3294000, 3294016], [3294304, 3294320], [3294400, 3294432], [3326768, 3326784], [3327072, 3327088], [3327168, 3327200], [3359536, 3359552], [3359840, 3359856], [3359936, 3359968], [3392304, 3392320], [3392608, 3392624], [3392704, 3392736]], "buffed_drops": [[225467, 225470], [225497, 225500], [1733192, 1733234]], "unexplore": [[534908, 534911], [554554, 554590]], "etank_refill_disabled": [[133490, 133493]], "energy_free_shinesparks": [[544974, 544977], [545021, 545024], [545065, 545068], [545469, 545472], [545590, 545592]], "tourian_blue_hopper": [[1157981, 1157984], [1176416, 1176442]], "seed_hash_display": [[93371, 93374], [96912, 97199]], "samus_tiles_optim_animated_tiles_fix": [[5142, 5198], [5537, 5540], [8405, 8409], [25088, 25246], [67930, 67939], [70546, 70550], [74430, 74431], [589888, 589900], [589950, 589962]], "mb_left_entrance": [[109283, 109284], [109290, 109292], [136393, 136417], [142337, 142339], [145007, 145011], [161152, 161166], [519680, 519689], [1500113, 1500117]], "escape": [[7712, 7715], [89948, 89952], [90106, 90109], [98064, 98088], [134387, 134390], [146734, 146739], [146776, 146781], [146832, 146837], [148822, 148825], [148853, 148856], [151272, 151275], [151356, 151359], [151413, 151416], [160640, 160791], [162048, 162190], [386651, 386654], [386657, 386660], [391424, 391448], [518294, 518297], [518333, 518336], [521728, 521970], [1110016, 1110930], [1296414, 1296418], [1308818, 1308821], [1310594, 1310609], [1356400, 1356403], [1375232, 1375297]], "fast_pause_menu": [[20527, 20569], [68914, 68917], [69994, 69998], [70031, 70035], [70093, 70096], [70128, 70131], [70161, 70165], [70205, 70209], [70237, 70346], [75023, 75026], [75194, 75197], [75212, 75215], [80164, 80176], [80288, 80328]], "subtitle": [], "vertical_door_fix": [[91452, 91460]], "gravity_palette": [[552118, 552146], [579355, 579357], [581226, 581232], [581306, 581386]], "disable_walljump": [[531978, 531980], [531988, 531990], [532032, 532034], [532041, 532043]], "ultra_low_qol_map_area": [[1423, 1426], [1447, 1450], [1481, 1484], [1510, 1513], [70683, 70686], [70720, 70723], [70773, 70776], [70957, 70960], [71010, 71013], [71211, 71214], [73429, 73432], [73473, 73476], [89728, 89735], [96015, 96046], [134289, 134292], [143772, 143775], [510220, 510223], [534974, 534977], [535155, 535158], [535160, 535163]], "credits": [[366966, 366970], [367003, 367007], [367077, 367081], [367112, 367116], [367129, 367133], [385233, 385237], [391024, 391186], [2568768, 2577282], [3134687, 3135319], [3135771, 3137307], [3137536, 3137824]], "new_game": [[17633, 17647], [65565, 65569], [65639, 65643], [93914, 93915], [1111040, 1111400]], "mother_brain_no_drain": [[1361220, 1361222]], "samus_dma_fix": [[5033, 5036], [5061, 5064], [5106, 5109], [5134, 5137], [24960, 25022]], "shaktool": [[145584, 145617]], "complementary_suits": [[451449, 451464], [524763, 524768], [551374, 551452], [554624, 554675], [1057891, 1057908], [1175256, 1175281]], "fast_saves": [[134390, 134399], [142726, 142786], [142833, 142901], [142971, 143039], [143336, 143374], [164130, 164133], [222853, 222855], [1123774, 1123862], [1124929, 1124932], [1124998, 1125001], [1125035, 1125038], [1125042, 1125045], [1125202, 1125205], [1125271, 1125274]], "ultra_low_qol_hud_expansion_opaque": [[5682, 5689], [5729, 5734], [6030, 6033], [6154, 6157], [6819, 6831], [7341, 7351], [7361, 7364], [7615, 7655], [8429, 8432], [8724, 8727], [8860, 8953], [36404, 36407], [42926, 42929], [45387, 45771], [69329, 69331], [69558, 69561], [69569, 69572], [69579, 69582], [71040, 71043], [71279, 71447], [78779, 78782], [78790, 78793], [78800, 78803], [81670, 81964], [87329, 88417], [91497, 91500], [163840, 163968], [163984, 163987], [164010, 164013], [164072, 164075], [164902, 164918], [165759, 169539], [169552, 169652], [230063, 230065], [230093, 230095], [230123, 230125], [230145, 230147], [264984, 264994], [271080, 271090], [301056, 305666], [306225, 306228], [306944, 306994], [327680, 340352], [458752, 482304], [864768, 872960], [1769472, 1798144], [1859584, 1867776]], "item_dots_disappear": [[8409, 8413], [70512, 70516], [70748, 70751], [90050, 90054], [97536, 97554], [112128, 112297], [133816, 133820], [164973, 164978], [535155, 535169]], "map_progress_maintain": [[433, 437], [1685, 1688], [1703, 1706], [1717, 1724], [1732, 1735], [1746, 1749], [32728, 32729], [70717, 70746], [70748, 70892], [73414, 73432], [134310, 134316], [534819, 534821], [534923, 534926], [534977, 534992], [535212, 535214], [535220, 535223], [535251, 535253], [535259, 535262], [535312, 535314], [535320, 535323], [535405, 535408], [554752, 554999], [1183940, 1183943], [1210064, 1210095], [1217239, 1217243], [1296421, 1296425], [1301374, 1301378], [1356405, 1356411]], "fast_doors": [[11868, 11871], [20736, 20747], [90917, 90927], [90937, 90947], [97664, 97713]], "itemsounds": [[90406, 90412], [134130, 134133], [155827, 155830], [155864, 155867], [155901, 155904], [155938, 155941], [155983, 155986], [156029, 156032], [156075, 156078], [156121, 156124], [156167, 156170], [156213, 156216], [156259, 156262], [156305, 156308], [156355, 156358], [156408, 156411], [156461, 156464], [156506, 156509], [156552, 156555], [156597, 156600], [156643, 156646], [156689, 156692], [156735, 156738], [156783, 156786], [156833, 156836], [156883, 156886], [156933, 156936], [156991, 156994], [157050, 157053], [157109, 157112], [157168, 157171], [157227, 157230], [157295, 157298], [157354, 157357], [157413, 157416], [157472, 157475], [157538, 157541], [157604, 157607], [157662, 157665], [157721, 157724], [157779, 157782], [157838, 157841], [157897, 157900], [157956, 157959], [158010, 158013], [158066, 158069], [158122, 158125], [158178, 158181], [158242, 158245], [158307, 158310], [158372, 158375], [158437, 158440], [158502, 158505], [158567, 158570], [158632, 158635], [158697, 158700], [158762, 158765], [158834, 158837], [158906, 158909], [158970, 158973], [159035, 159038], [159099, 159102], [159164, 159167], [159229, 159232], [159294, 159297], [161024, 161105], [163977, 163979], [165009, 165011]], "fast_reload": [[8328, 8334], [8341, 8345], [8398, 8402], [8467, 8471], [67962, 67966], [89543, 89575], [90889, 90895], [97792, 97796], [97916, 97920], [134422, 134426], [164126, 164130], [170112, 170250], [581988, 581994], [1080832, 1081120]], "mb_barrier_clear": [[109266, 109268], [146958, 146962], [153195, 153199], [160256, 160401], [518912, 519058], [519104, 519120], [519328, 519363]], "msu1": [[3879, 3882], [23040, 23425]], "no_map_select": [[37150, 37153], [61696, 61712]], "boss_exit": [[522224, 522228]], "sound_effect_disables": [[275526, 275530]], "fast_big_boy_cutscene": [[1366294, 1366297], [1366353, 1366369], [1372209, 1372212], [1372233, 1372236], [1372840, 1372843], [1372858, 1372861], [1372902, 1372905], [1372958, 1372961], [1373002, 1373005]], "beam_doors": [[163008, 163800]], "horizontal_door_fix": [[132232, 132235], [132320, 132323], [161168, 161180]], "title_map_animation": [[368945, 368961], [369463, 369493], [369497, 369499], [697825, 698415]], "music": [[496329, 496331], [496408, 496410], [496571, 496573], [496754, 496756], [496797, 496799], [496995, 496997], [497038, 497040], [497081, 497083], [497125, 497127], [497168, 497170], [497260, 497262], [497365, 497367], [497521, 497523], [497907, 497909], [497950, 497952], [498042, 498044], [498085, 498087], [498126, 498128], [498186, 498188], [498266, 498268], [498292, 498294], [498342, 498344], [498368, 498370], [498606, 498608], [498649, 498651], [498758, 498760], [498799, 498801], [498842, 498844], [498884, 498886], [499234, 499236], [499495, 499497], [499521, 499523], [499578, 499580], [499604, 499606], [499702, 499704], [499746, 499748], [499810, 499812], [499852, 499854], [499939, 499941], [499992, 499994], [500033, 500035], [500076, 500078], [500158, 500160], [500201, 500203], [500388, 500390], [500488, 500490], [500621, 500623], [500718, 500720], [500761, 500763], [500866, 500868], [500930, 500932], [501116, 501118], [501199, 501201], [501289, 501291], [501330, 501332], [501614, 501616], [501657, 501659], [501700, 501702], [501798, 501800], [501878, 501880], [501962, 501964], [502025, 502027], [502303, 502305], [502354, 502356], [502511, 502513], [502552, 502554], [502604, 502606], [502645, 502647], [502688, 502690], [502755, 502757], [502801, 502803], [502891, 502893], [502932, 502934], [502980, 502982], [503041, 503043], [503230, 503232], [503320, 503322], [503363, 503365], [503429, 503431], [503493, 503495], [503536, 503538], [503589, 503591], [503683, 503685], [503732, 503734], [503775, 503777], [503820, 503822], [503863, 503865], [503906, 503908], [503947, 503949], [504005, 504007], [504087, 504089], [504138, 504140], [504758, 504760], [504859, 504861], [504936, 504938], [504979, 504981], [505022, 505024], [505078, 505080], [505121, 505123], [505195, 505197], [505238, 505240], [505318, 505320], [505404, 505406], [505513, 505515], [510660, 510662], [510686, 510688], [510881, 510883], [510907, 510909], [511201, 511203], [511227, 511229], [511346, 511348], [511372, 511374], [511422, 511424], [511448, 511450], [511495, 511497], [511521, 511523], [511574, 511576], [511600, 511602], [511845, 511847], [512040, 512042], [512102, 512104], [512202, 512204], [512332, 512334], [512382, 512384], [512494, 512496], [512611, 512613], [512655, 512657], [512699, 512701], [512746, 512748], [512849, 512851], [512920, 512922], [512967, 512969], [513049, 513051], [513092, 513094], [513138, 513140], [513183, 513185], [513235, 513237], [513280, 513282], [513327, 513329], [513374, 513376], [513419, 513421], [513533, 513535], [513623, 513625], [513707, 513709], [513761, 513763], [513806, 513808], [513851, 513853], [513957, 513959], [514134, 514136], [514175, 514177], [514217, 514219], [514267, 514269], [514293, 514295], [514340, 514342], [514533, 514535], [514575, 514577], [514620, 514622], [514807, 514809], [514833, 514835], [514887, 514889], [514913, 514915], [514963, 514965], [514989, 514991], [515271, 515273], [515297, 515299], [515391, 515393], [515442, 515444], [515468, 515470], [515541, 515543], [515678, 515680], [515723, 515725], [515768, 515770], [515823, 515825]], "missile_refill_all": [[134354, 134360], [134369, 134375], [143039, 143045], [144104, 144110], [144155, 144161], [160000, 160042]], "hazard_markers": [[91182, 91189], [92091, 92095], [92229, 92236], [161792, 162016], [518291, 518294], [523904, 523909], [1835008, 1835032]], "enable_moonwalk": [[45917, 45926]], "fix_water_fx_bug": [[91737, 91741], [96896, 96904]], "ultra_low_qol_vanilla_bugfixes": [[131946, 131948], [132887, 132891], [157902, 157903], [159234, 159235], [1372012, 1372032]], "flashing_placebo": [[1182941, 1182955], [1210048, 1210064], [1301887, 1301890], [1310688, 1310720]], "fix_kraid_vomit": [[132634, 132637], [155796, 155799], [162816, 162831]], "hud_expansion_opaque": [[5682, 5689], [5729, 5734], [6030, 6033], [6154, 6157], [6819, 6831], [7341, 7351], [7361, 7364], [7615, 7655], [8429, 8432], [8724, 8727], [8860, 8953], [36404, 36407], [42926, 42929], [45387, 45771], [69329, 69331], [69558, 69561], [69569, 69572], [69579, 69582], [71040, 71043], [71279, 71447], [78779, 78782], [78790, 78793], [78800, 78803], [81670, 81964], [87329, 88417], [91497, 91500], [163840, 163968], [163984, 163987], [164010, 164013], [164072, 164075], [164902, 164918], [165759, 169639], [230063, 230065], [230093, 230095], [230123, 230125], [230145, 230147], [264984, 264994], [271080, 271090], [301056, 305666], [306225, 306228], [306944, 306994], [327680, 340352], [458752, 482304], [864768, 872960], [1769472, 1798144], [1859584, 1867776]], "momentum_conservation": [[533450, 533453], [555008, 555086]], "Area FX": [[89853, 89857], [112640, 113076], [137425, 137791], [138765, 138793], [138821, 138933], [138961, 139045], [229818, 229825], [230009, 230011], [230015, 230017], [230021, 230023], [230027, 230029], [230033, 230035], [248164, 248446], [274595, 274599], [274690, 274698], [306064, 306067], [306083, 306086], [306168, 306171], [306213, 306216], [306263, 306266], [306274, 306282], [306328, 306336], [307040, 307387], [341250, 341509], [341760, 343919], [444038, 444053], [453721, 453727], [456561, 456565], [456597, 456605], [458697, 458701], [508187, 508192]], "Area Palette Glows": [[443647, 443681], [443687, 443723], [451674, 451677], [456549, 456553], [456557, 456561], [456565, 456597], [456605, 456613], [456849, 457022], [458701, 458733], [1933312, 1965719]], "Ceres Enable": [[92211, 92219], [92891, 92899], [551511, 551519]], "Area Map Debug": [[81571, 81600], [89847, 89850]], "Fake Lava": [[275684, 275687], [524760, 524766], [524810, 524812], [530241, 530247], [530626, 530632], [530908, 530914], [530991, 530997], [531412, 531418], [531547, 531553], [533561, 533567], [556032, 556065], [580018, 580024], [587402, 587408], [587499, 587505], [588406, 588413], [588558, 588564], [589806, 589819]], "Bowling": [[138437, 138447], [152527, 152533], [152556, 152562], [341536, 341709]], "Area Palettes": [[89885, 89897], [305666, 305671], [306011, 306014], [306171, 306174], [306177, 306181], [306185, 306189], [306193, 306197], [344066, 347433], [1185901, 1185908], [1239164, 1239170], [1239269, 1239319], [1239324, 1239398], [1254614, 1254627], [1301617, 1301621], [1503819, 1503832], [2097152, 2126232], [2129920, 2150587]], "Scrolling Sky v1.6": [[272344, 272406], [273782, 274227], [292352, 293631], [340352, 341223], [496073, 496083], [508182, 508187], [508192, 508196]]} \ No newline at end of file +{"ultra_low_qol_saveload": [[32768, 32771], [32901, 32904], [39495, 39499], [39506, 39510], [39521, 39524], [40110, 40114], [40126, 40129], [61216, 61635]], "gray_doors": [[91748, 91752], [133287, 133290], [145996, 146045], [152379, 152387], [162304, 162631], [493122, 493124], [493127, 493128], [505420, 505422], [521984, 521998], [1079552, 1079667], [1181322, 1181326], [1217869, 1217875], [1240563, 1240569], [1258129, 1258141], [1291124, 1291128], [1301826, 1301832], [1397690, 1397696], [1406931, 1406945], [1679396, 1679400]], "no_beeping": [[551570, 551574], [551584, 551588], [553788, 553792], [583386, 583390]], "elevators_speed": [[1152385, 1152410], [1152432, 1152433], [1152466, 1152467], [1152492, 1152493], [1176352, 1176395]], "spin_lock": [[169984, 170024], [557488, 557492]], "rng_fix": [[91754, 91764], [112384, 112571]], "disable_map_icons": [[79474, 79475], [80688, 80689]], "respin": [[555392, 555423], [558180, 558254], [564962, 567310], [567348, 567350], [567412, 567540], [567548, 569358], [588953, 588958]], "etank_refill_full": [[133490, 133493], [160896, 160906]], "alternate_door_colors": [[68908, 68911], [91282, 91285], [92112, 92115], [96768, 96876]], "fix_kraid_hud": [[89629, 89632], [97200, 97263]], "hyper_beam": [[146734, 146739], [146776, 146781], [146832, 146837], [148822, 148825], [148853, 148856], [151272, 151275], [151356, 151359], [151413, 151416], [162048, 162134]], "max_ammo_display_fast": [[6625, 6646], [6857, 6871], [6938, 6941], [6952, 6955], [7168, 7171], [19872, 20359], [165969, 165975], [166033, 166039], [166225, 166231], [166291, 166295], [166479, 166483], [166543, 166547], [865602, 865664], [865728, 865887], [865937, 865984]], "oob_death": [[20800, 20888], [68527, 68531]], "escape_autosave": [[19019, 19033], [109926, 109938], [162880, 162974], [515494, 515496], [515498, 515502], [515508, 515510], [522240, 522380], [1111552, 1111587], [1345262, 1345266], [1345338, 1345341], [1356279, 1356282], [1375552, 1375637]], "escape_timer": [[551176, 551179], [555264, 555277], [1125319, 1125322], [1125525, 1125526]], "fast_mother_brain_cutscene": [[1346931, 1346934], [1346949, 1346952], [1346990, 1346993], [1350957, 1350959], [1350961, 1350963], [1355527, 1355529], [1355598, 1355600], [1355715, 1355717], [1355789, 1355791], [1356190, 1356193], [1356210, 1356212], [1358598, 1358618], [1359565, 1359568], [1359646, 1359649], [1359945, 1359955], [1375488, 1375506]], "pause_menu_objectives": [[69898, 69901], [70443, 70446], [75013, 75019], [75293, 75296], [75309, 75315], [75675, 75681], [75808, 75811], [75838, 75841], [82406, 82408], [98176, 98264], [170784, 171919], [1776128, 1776160], [1776480, 1776544], [1776608, 1776640], [1778016, 1778144], [1778560, 1778656]], "fix_hyper_slowlock": [[170752, 170780], [583172, 583178]], "vanilla_bugfixes": [[11817, 11820], [17523, 17526], [17532, 17535], [20992, 21014], [68842, 68845], [77824, 77826], [78196, 78199], [79044, 79047], [88960, 88963], [97264, 97320], [131880, 131883], [131939, 131955], [132492, 132517], [132887, 132891], [134412, 134415], [144852, 144855], [157902, 157903], [159234, 159235], [207101, 207104], [210692, 210695], [570921, 570922], [1051365, 1051368], [1079328, 1079340], [1372012, 1372032], [1394972, 1394974], [1719715, 1719717]], "nothing_item": [[161536, 161570]], "escape_items": [[133378, 133381], [133417, 133420], [133456, 133459], [160512, 160525], [386607, 386610], [391008, 391018], [1363218, 1363222], [1375088, 1375122]], "walljump_item": [[159744, 159984], [164432, 164435], [164436, 164439], [164593, 164596], [164598, 164601], [169648, 169898], [532043, 532053], [532076, 532086]], "constants": [], "saveload": [[32768, 32771], [32901, 32904], [39495, 39499], [39506, 39510], [39521, 39524], [40110, 40114], [40126, 40129], [61216, 61622], [516865, 516868], [516880, 516883], [523840, 523854]], "stats": [[843, 846], [861, 864], [1109, 1113], [1203, 1208], [1885, 1887], [4003, 4031], [5513, 5516], [5605, 5625], [5634, 5639], [21056, 21250], [65959, 65961], [89237, 89243], [134405, 134409], [155830, 155832], [155867, 155869], [155904, 155906], [155941, 155943], [155986, 155988], [156032, 156034], [156078, 156080], [156124, 156126], [156170, 156172], [156216, 156218], [156262, 156264], [156308, 156310], [156360, 156362], [156413, 156415], [156464, 156466], [156509, 156511], [156555, 156557], [156600, 156602], [156646, 156648], [156692, 156694], [156738, 156740], [156786, 156788], [156836, 156838], [156886, 156888], [156936, 156938], [156994, 156996], [157053, 157055], [157112, 157114], [157171, 157173], [157230, 157232], [157298, 157300], [157357, 157359], [157416, 157418], [157477, 157479], [157543, 157545], [157607, 157609], [157665, 157667], [157724, 157726], [157782, 157784], [157841, 157843], [157900, 157902], [157959, 157961], [158013, 158015], [158069, 158071], [158125, 158127], [158181, 158183], [158245, 158247], [158310, 158312], [158375, 158377], [158440, 158442], [158505, 158507], [158570, 158572], [158635, 158637], [158700, 158702], [158767, 158769], [158839, 158841], [158909, 158911], [158973, 158975], [159038, 159040], [159102, 159104], [159167, 159169], [159232, 159234], [159297, 159299], [161584, 161778], [170368, 170522], [364907, 364909], [549106, 549112], [1125139, 1125143], [1125180, 1125184]], "aim_anything": [[95690, 95691], [557556, 557720]], "all_items_spawn": [[498358, 498360], [499397, 499399], [510388, 510390], [510676, 510678], [511053, 511055], [511438, 511440], [511511, 511513], [511590, 511592]], "map_area": [[1423, 1426], [1447, 1450], [1481, 1484], [1510, 1513], [6283, 6563], [7132, 7135], [7615, 7655], [8724, 8727], [65635, 65639], [66292, 66309], [68932, 68935], [69255, 69272], [69319, 69336], [69691, 69694], [69898, 69901], [69925, 69928], [69936, 69939], [69978, 69981], [70144, 70147], [70155, 70158], [70199, 70202], [70491, 70494], [70506, 70509], [70683, 70686], [70720, 70723], [70773, 70776], [70957, 70960], [71010, 71013], [71211, 71214], [73255, 73260], [73272, 73275], [73429, 73432], [73473, 73476], [75322, 75325], [75352, 75355], [75382, 75385], [75412, 75415], [75688, 75691], [75718, 75721], [75748, 75751], [75778, 75781], [89728, 89735], [90041, 90045], [90615, 90618], [90654, 90657], [91242, 91244], [91250, 91252], [91272, 91282], [91298, 91301], [91497, 91500], [92004, 92007], [92105, 92112], [96015, 96763], [98302, 98304], [134289, 134292], [143772, 143775], [164176, 164201], [164902, 164918], [306018, 306022], [306026, 306030], [306034, 306038], [306043, 306047], [306181, 306185], [306189, 306193], [306197, 306201], [306206, 306210], [510220, 510223], [534513, 534516], [534974, 534977], [535155, 535158], [535160, 535163], [535293, 535296], [535370, 535376], [535382, 535385], [1294906, 1294923], [1296267, 1296270], [1296272, 1296275], [1296305, 1296308], [1296310, 1296313], [1296343, 1296346], [1296348, 1296351], [1296381, 1296384], [1296386, 1296389], [1297019, 1297021], [1297047, 1297049], [1310656, 1310664], [1798194, 1798200], [3407872, 3408175]], "decompression": [[12543, 12868]], "zebes_asleep_music": [[89930, 89933], [97920, 98040]], "ultra_low_qol_new_game": [[17633, 17647], [65565, 65569], [65639, 65643], [93914, 93915], [1110544, 1110633]], "sram_check_disable": [[0, 2]], "reserve_hud": [[5736, 5739], [6896, 6899], [6990, 6996], [21312, 22304], [68939, 68942], [70556, 70559], [77529, 77532], [77622, 77638], [91651, 91654], [98048, 98056], [98096, 98172], [133510, 133513], [160912, 160922], [263132, 263136], [3228464, 3228480], [3228768, 3228784], [3228864, 3228896], [3261232, 3261248], [3261536, 3261552], [3261632, 3261664], [3294000, 3294016], [3294304, 3294320], [3294400, 3294432], [3326768, 3326784], [3327072, 3327088], [3327168, 3327200], [3359536, 3359552], [3359840, 3359856], [3359936, 3359968], [3392304, 3392320], [3392608, 3392624], [3392704, 3392736]], "buffed_drops": [[225467, 225470], [225497, 225500], [1733192, 1733234]], "unexplore": [[534908, 534911], [554554, 554590]], "etank_refill_disabled": [[133490, 133493]], "energy_free_shinesparks": [[544974, 544977], [545021, 545024], [545065, 545068], [545469, 545472], [545590, 545592]], "tourian_blue_hopper": [[1157981, 1157984], [1176416, 1176442]], "seed_hash_display": [[93371, 93374], [96912, 97199]], "samus_tiles_optim_animated_tiles_fix": [[5142, 5198], [5537, 5540], [8405, 8409], [25088, 25246], [67930, 67939], [70546, 70550], [74430, 74431], [589888, 589900], [589950, 589962]], "mb_left_entrance": [[109283, 109284], [109290, 109292], [136393, 136417], [142337, 142339], [145007, 145011], [161152, 161166], [519680, 519689], [1500113, 1500117]], "escape": [[7712, 7715], [89948, 89952], [90106, 90109], [98064, 98088], [134387, 134390], [146734, 146739], [146776, 146781], [146832, 146837], [148822, 148825], [148853, 148856], [151272, 151275], [151356, 151359], [151413, 151416], [160640, 160791], [162048, 162190], [386651, 386654], [386657, 386660], [391424, 391448], [518294, 518297], [518333, 518336], [521728, 521970], [1110016, 1110930], [1296414, 1296418], [1308818, 1308821], [1310594, 1310609], [1356400, 1356403], [1375232, 1375297]], "fast_pause_menu": [[20527, 20569], [68914, 68917], [69994, 69998], [70031, 70035], [70093, 70096], [70128, 70131], [70161, 70165], [70205, 70209], [70237, 70346], [75023, 75026], [75194, 75197], [75212, 75215], [80164, 80176], [80288, 80328]], "subtitle": [], "vertical_door_fix": [[91452, 91460]], "gravity_palette": [[552118, 552146], [579355, 579357], [581226, 581232], [581306, 581386]], "disable_walljump": [[531978, 531980], [531988, 531990], [532032, 532034], [532041, 532043]], "ultra_low_qol_map_area": [[1423, 1426], [1447, 1450], [1481, 1484], [1510, 1513], [70683, 70686], [70720, 70723], [70773, 70776], [70957, 70960], [71010, 71013], [71211, 71214], [73429, 73432], [73473, 73476], [89728, 89735], [96015, 96046], [134289, 134292], [143772, 143775], [510220, 510223], [534974, 534977], [535155, 535158], [535160, 535163]], "credits": [[366966, 366970], [367003, 367007], [367077, 367081], [367112, 367116], [367129, 367133], [385233, 385237], [391024, 391186], [2568768, 2577282], [3134687, 3135319], [3135771, 3137307], [3137536, 3137824]], "new_game": [[17633, 17647], [65565, 65569], [65639, 65643], [93914, 93915], [1111040, 1111400]], "mother_brain_no_drain": [[1361220, 1361222]], "samus_dma_fix": [[5033, 5036], [5061, 5064], [5106, 5109], [5134, 5137], [24960, 25022]], "shaktool": [[145584, 145617]], "complementary_suits": [[451449, 451464], [524763, 524768], [551374, 551452], [554624, 554675], [1057891, 1057908], [1175256, 1175281]], "fast_saves": [[134390, 134399], [142726, 142786], [142833, 142901], [142971, 143039], [143336, 143374], [164130, 164133], [222853, 222855], [1123774, 1123862], [1124929, 1124932], [1124998, 1125001], [1125035, 1125038], [1125042, 1125045], [1125202, 1125205], [1125271, 1125274]], "ultra_low_qol_hud_expansion_opaque": [[5682, 5689], [5729, 5734], [6030, 6033], [6154, 6157], [6819, 6831], [7341, 7351], [7361, 7364], [7615, 7655], [8429, 8432], [8724, 8727], [8860, 8953], [36404, 36407], [42926, 42929], [45387, 45771], [69329, 69331], [69558, 69561], [69569, 69572], [69579, 69582], [71040, 71043], [71279, 71447], [78779, 78782], [78790, 78793], [78800, 78803], [81670, 81964], [87329, 88417], [91497, 91500], [163840, 163968], [163984, 163987], [164010, 164013], [164072, 164075], [164902, 164918], [165759, 169539], [169552, 169652], [230063, 230065], [230093, 230095], [230123, 230125], [230145, 230147], [264984, 264994], [271080, 271090], [301056, 305666], [306225, 306228], [306944, 306994], [327680, 340352], [458752, 482304], [864768, 872960], [1769472, 1798144], [1859584, 1867776]], "item_dots_disappear": [[8409, 8413], [70512, 70516], [70748, 70751], [90050, 90054], [97536, 97554], [112128, 112297], [133816, 133820], [164973, 164978], [535155, 535169]], "map_progress_maintain": [[433, 437], [1685, 1688], [1703, 1706], [1717, 1724], [1732, 1735], [1746, 1749], [32728, 32729], [70717, 70746], [70748, 70892], [73414, 73432], [134310, 134316], [534819, 534821], [534923, 534926], [534977, 534992], [535212, 535214], [535220, 535223], [535251, 535253], [535259, 535262], [535312, 535314], [535320, 535323], [535405, 535408], [554752, 554999], [1183940, 1183943], [1210064, 1210095], [1217239, 1217243], [1296421, 1296425], [1301374, 1301378], [1356405, 1356411]], "fast_doors": [[11868, 11871], [20736, 20747], [90917, 90927], [90937, 90947], [97664, 97713]], "itemsounds": [[90406, 90412], [134130, 134133], [155827, 155830], [155864, 155867], [155901, 155904], [155938, 155941], [155983, 155986], [156029, 156032], [156075, 156078], [156121, 156124], [156167, 156170], [156213, 156216], [156259, 156262], [156305, 156308], [156355, 156358], [156408, 156411], [156461, 156464], [156506, 156509], [156552, 156555], [156597, 156600], [156643, 156646], [156689, 156692], [156735, 156738], [156783, 156786], [156833, 156836], [156883, 156886], [156933, 156936], [156991, 156994], [157050, 157053], [157109, 157112], [157168, 157171], [157227, 157230], [157295, 157298], [157354, 157357], [157413, 157416], [157472, 157475], [157538, 157541], [157604, 157607], [157662, 157665], [157721, 157724], [157779, 157782], [157838, 157841], [157897, 157900], [157956, 157959], [158010, 158013], [158066, 158069], [158122, 158125], [158178, 158181], [158242, 158245], [158307, 158310], [158372, 158375], [158437, 158440], [158502, 158505], [158567, 158570], [158632, 158635], [158697, 158700], [158762, 158765], [158834, 158837], [158906, 158909], [158970, 158973], [159035, 159038], [159099, 159102], [159164, 159167], [159229, 159232], [159294, 159297], [161024, 161105], [163977, 163979], [165009, 165011]], "fast_reload": [[8328, 8334], [8341, 8345], [8398, 8402], [8467, 8471], [67962, 67966], [89543, 89575], [90889, 90895], [97792, 97796], [97916, 97920], [134422, 134426], [164126, 164130], [170112, 170250], [581988, 581994], [1080832, 1081120]], "mb_barrier_clear": [[109266, 109268], [146958, 146962], [153195, 153199], [160256, 160401], [518912, 519058], [519104, 519120], [519328, 519363]], "msu1": [[3879, 3882], [23040, 23425]], "no_map_select": [[37150, 37153], [61696, 61712]], "boss_exit": [[522224, 522228]], "sound_effect_disables": [[275526, 275530]], "fast_big_boy_cutscene": [[1366294, 1366297], [1366353, 1366369], [1372209, 1372212], [1372233, 1372236], [1372840, 1372843], [1372858, 1372861], [1372902, 1372905], [1372958, 1372961], [1373002, 1373005]], "beam_doors": [[163008, 163800]], "horizontal_door_fix": [[132232, 132235], [132320, 132323], [161168, 161180]], "title_map_animation": [[368945, 368961], [369463, 369493], [369497, 369499], [697825, 698415]], "music": [[496329, 496331], [496408, 496410], [496571, 496573], [496754, 496756], [496797, 496799], [496995, 496997], [497038, 497040], [497081, 497083], [497125, 497127], [497168, 497170], [497260, 497262], [497365, 497367], [497521, 497523], [497907, 497909], [497950, 497952], [498042, 498044], [498085, 498087], [498126, 498128], [498186, 498188], [498266, 498268], [498292, 498294], [498342, 498344], [498368, 498370], [498606, 498608], [498649, 498651], [498758, 498760], [498799, 498801], [498842, 498844], [498884, 498886], [499234, 499236], [499495, 499497], [499521, 499523], [499578, 499580], [499604, 499606], [499702, 499704], [499746, 499748], [499810, 499812], [499852, 499854], [499939, 499941], [499992, 499994], [500033, 500035], [500076, 500078], [500158, 500160], [500201, 500203], [500388, 500390], [500488, 500490], [500621, 500623], [500718, 500720], [500761, 500763], [500866, 500868], [500930, 500932], [501116, 501118], [501199, 501201], [501289, 501291], [501330, 501332], [501614, 501616], [501657, 501659], [501700, 501702], [501798, 501800], [501878, 501880], [501962, 501964], [502025, 502027], [502303, 502305], [502354, 502356], [502511, 502513], [502552, 502554], [502604, 502606], [502645, 502647], [502688, 502690], [502755, 502757], [502801, 502803], [502891, 502893], [502932, 502934], [502980, 502982], [503041, 503043], [503230, 503232], [503320, 503322], [503363, 503365], [503429, 503431], [503493, 503495], [503536, 503538], [503589, 503591], [503683, 503685], [503732, 503734], [503775, 503777], [503820, 503822], [503863, 503865], [503906, 503908], [503947, 503949], [504005, 504007], [504087, 504089], [504138, 504140], [504758, 504760], [504859, 504861], [504936, 504938], [504979, 504981], [505022, 505024], [505078, 505080], [505121, 505123], [505195, 505197], [505238, 505240], [505318, 505320], [505404, 505406], [505513, 505515], [510660, 510662], [510686, 510688], [510881, 510883], [510907, 510909], [511201, 511203], [511227, 511229], [511346, 511348], [511372, 511374], [511422, 511424], [511448, 511450], [511495, 511497], [511521, 511523], [511574, 511576], [511600, 511602], [511845, 511847], [512040, 512042], [512102, 512104], [512202, 512204], [512332, 512334], [512382, 512384], [512494, 512496], [512611, 512613], [512655, 512657], [512699, 512701], [512746, 512748], [512849, 512851], [512920, 512922], [512967, 512969], [513049, 513051], [513092, 513094], [513138, 513140], [513183, 513185], [513235, 513237], [513280, 513282], [513327, 513329], [513374, 513376], [513419, 513421], [513533, 513535], [513623, 513625], [513707, 513709], [513761, 513763], [513806, 513808], [513851, 513853], [513957, 513959], [514134, 514136], [514175, 514177], [514217, 514219], [514267, 514269], [514293, 514295], [514340, 514342], [514533, 514535], [514575, 514577], [514620, 514622], [514807, 514809], [514833, 514835], [514887, 514889], [514913, 514915], [514963, 514965], [514989, 514991], [515271, 515273], [515297, 515299], [515391, 515393], [515442, 515444], [515468, 515470], [515541, 515543], [515678, 515680], [515723, 515725], [515768, 515770], [515823, 515825]], "missile_refill_all": [[134354, 134360], [134369, 134375], [143039, 143045], [144104, 144110], [144155, 144161], [160000, 160042]], "hazard_markers": [[91182, 91189], [92091, 92095], [92229, 92236], [161792, 162016], [518291, 518294], [523904, 523909], [1835008, 1835032]], "enable_moonwalk": [[45917, 45926]], "fix_water_fx_bug": [[91737, 91741], [96896, 96904]], "ultra_low_qol_vanilla_bugfixes": [[131946, 131948], [132887, 132891], [157902, 157903], [159234, 159235], [1372012, 1372032]], "flashing_placebo": [[1182941, 1182955], [1210048, 1210064], [1301887, 1301890], [1310688, 1310720]], "fix_kraid_vomit": [[132634, 132637], [155796, 155799], [162816, 162831]], "hud_expansion_opaque": [[5682, 5689], [5729, 5734], [6030, 6033], [6154, 6157], [6819, 6831], [7341, 7351], [7361, 7364], [7615, 7655], [8429, 8432], [8724, 8727], [8860, 8953], [36404, 36407], [42926, 42929], [45387, 45771], [69329, 69331], [69558, 69561], [69569, 69572], [69579, 69582], [71040, 71043], [71279, 71447], [78779, 78782], [78790, 78793], [78800, 78803], [81670, 81964], [87329, 88417], [91497, 91500], [163840, 163968], [163984, 163987], [164010, 164013], [164072, 164075], [164902, 164918], [165759, 169639], [230063, 230065], [230093, 230095], [230123, 230125], [230145, 230147], [264984, 264994], [271080, 271090], [301056, 305666], [306225, 306228], [306944, 306994], [327680, 340352], [458752, 482304], [864768, 872960], [1769472, 1798144], [1859584, 1867776]], "momentum_conservation": [[533450, 533453], [555008, 555086]], "Area FX": [[89853, 89857], [112640, 113076], [137425, 137791], [138765, 138793], [138821, 138933], [138961, 139045], [229818, 229825], [230009, 230011], [230015, 230017], [230021, 230023], [230027, 230029], [230033, 230035], [248164, 248446], [274595, 274599], [274690, 274698], [306064, 306067], [306083, 306086], [306168, 306171], [306213, 306216], [306263, 306266], [306274, 306282], [306328, 306336], [307040, 307387], [341250, 341509], [341760, 343919], [444038, 444053], [453721, 453727], [456561, 456565], [456597, 456605], [458697, 458701], [508187, 508192]], "Area Palette Glows": [[443647, 443681], [443687, 443723], [451674, 451677], [456549, 456553], [456557, 456561], [456565, 456597], [456605, 456613], [456849, 457022], [458701, 458733], [1933312, 1965719]], "Ceres Enable": [[92211, 92219], [92891, 92899], [551511, 551519]], "Area Map Debug": [[81571, 81600], [89847, 89850]], "Fake Lava": [[275684, 275687], [524760, 524766], [524810, 524812], [530241, 530247], [530626, 530632], [530908, 530914], [530991, 530997], [531412, 531418], [531547, 531553], [533561, 533567], [556032, 556065], [580018, 580024], [587402, 587408], [587499, 587505], [588406, 588413], [588558, 588564], [589806, 589819]], "Bowling": [[138437, 138447], [152527, 152533], [152556, 152562], [341536, 341709]], "Area Palettes": [[89885, 89897], [305666, 305671], [306011, 306014], [306171, 306174], [306177, 306181], [306185, 306189], [306193, 306197], [344066, 347433], [1185901, 1185908], [1239164, 1239170], [1239269, 1239319], [1239324, 1239398], [1254614, 1254627], [1301617, 1301621], [1503819, 1503832], [2097152, 2126232], [2129920, 2150587]], "Scrolling Sky v1.6": [[272344, 272406], [273782, 274227], [292352, 293631], [340352, 341223], [496073, 496083], [508182, 508187], [508192, 508196]]} \ No newline at end of file diff --git a/patches/rom_map/Bank 82.txt b/patches/rom_map/Bank 82.txt index 98808b0ce6..30a52ea1e6 100644 --- a/patches/rom_map/Bank 82.txt +++ b/patches/rom_map/Bank 82.txt @@ -1,16 +1,17 @@ F70F - FA00: map_area.asm -FA00 - FA80: alternate_door_colors -FA80 - FA90: fix_water_fx_bug -FA90 - FBB0: seed_hash_display -FBB0 - FBF0: fix_kraid_hud +FA00 - FA80: alternate_door_colors.asm +FA80 - FA90: fix_water_fx_bug.asm +FA90 - FBB0: seed_hash_display.asm +FBB0 - FBF0: fix_kraid_hud.asm FBF0 - FC30: vanilla_bugfixes.asm FC30 - FD00: [FREE] -FD00 - FD80: item_dots_disappear -FD80 - FE00: fast_doors -FE00 - FE80: fast_reload -FE80 - FF00: zebes_asleep_music +FD00 - FD80: item_dots_disappear.asm +FD80 - FE00: fast_doors.asm +FE00 - FE80: fast_reload.asm +FE80 - FF00: zebes_asleep_music.asm FF00 - FF10: reserve_hud.asm FF10 - FF30: escape.asm FF30 - FF80: reserve_hud.asm -FF80 - FFFE: [FREE] +FF80 - FFFC: pause_menu_objectives.asm +FFFC - FFFE: fast_pause_menu FFFE - end: custom etank color \ No newline at end of file diff --git a/patches/rom_map/Bank 85.txt b/patches/rom_map/Bank 85.txt index 28060aca96..c63c588912 100644 --- a/patches/rom_map/Bank 85.txt +++ b/patches/rom_map/Bank 85.txt @@ -3,4 +3,5 @@ $96B0 - $9800: walljump_item.asm $9800 - $9880: spin_lock.asm $9880 - $9980: fast_reload.asm $9980 - $9B00: stats.asm -$9B00 - $9B20: fix_hyper_slowlock.asm \ No newline at end of file +$9B00 - $9B20: fix_hyper_slowlock.asm +$9B20 - $A050: pause_menu_objectives.asm \ No newline at end of file diff --git a/patches/rom_map/Bank B6.txt b/patches/rom_map/Bank B6.txt new file mode 100644 index 0000000000..fa4f83a65d --- /dev/null +++ b/patches/rom_map/Bank B6.txt @@ -0,0 +1 @@ +F200-F660: pause_menu_objectives.asm diff --git a/patches/src/pause_menu_objectives.asm b/patches/src/pause_menu_objectives.asm new file mode 100644 index 0000000000..a44f5a7b02 --- /dev/null +++ b/patches/src/pause_menu_objectives.asm @@ -0,0 +1,864 @@ +; Objectives pause menu screen based on VARIA Randomizer's patch by theonlydude/flohgh +; +; Simplified the objectives implementation and ported much of the code to reside in bank 85. +; +; Randomizer defines the objectives @ $B6F200 with the following format: +; +; - Each line terminates with a word value of $8000 +; - Max length of line is 30 displayable characters +; - Valid characters defined in tables/pause_menu_objectives_chars.tbl. They must be converted to +; the corresponding word value in the .tbl before writing to ROM +; - Line count is 18 and must all be defined (even if blank) +; +; The first occurrence of !check_char (defined below) will be converted to a check mark +; once the objective is completed. +; +; Stag Shot + +lorom +arch 65816 + +math pri on + +!bank_82_free_space_start = $82FF80 +!bank_82_free_space_end = $82FFFC + +!bank_85_free_space_start = $859B20 +!bank_85_free_space_end = $85A050 + +!bank_B6_free_space_start = $B6F200 +!bank_B6_free_space_end = $B6F660 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; HIJACKS + +;;; new pause index func list +org $82910A + JSR (new_pause_index_func_list,x) + +;;; simplify unpausing +org $82932B + JSR $A56D + +;;; update BG2 buttons +org $82A62D + JSL set_bg2_equipment_screen : nop : nop + +org $82A79B + JSL set_bg2_map_screen : nop : nop + +;;; keep 'MAP' left button visible on map screen by keeping palette 2 instead of palette 5 (grey one) +org $82A820 + ORA #$1000 + +org $82A83E + ORA #$1000 + +;;; update glowing sprite around L/R pointer +org $82C1E6 + dw glowing_LR_animation + +;;; new function to check for L/R button pressed +org $82A505 + JML check_l_r_pressed : nop : nop + +;;; Replace pause screen button label palettes functions +org $82A61D + JSR (new_pause_palettes_func_list,x) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; Pause stuff + +!n_lines = #$0012 + +!ObjectiveAddrs = $8FEBC0 +!ObjectiveBitmasks = $8FEBC8 + +;;; character conversion table +table "tables/pause_menu_objectives_chars.tbl",RTL + +;;; pause state +!pause_index = $0727 + +;;; fast_pause_menu +!fast_pause_menu = $82fffc ; must match address in patch.rs + +;;; pause index values +!pause_index_map_screen = #$0000 +!pause_index_equipment_screen = #$0001 +!pause_index_map2equip_fading_out = #$0002 +!pause_index_map2equip_load_equip = #$0003 +!pause_index_map2equip_fading_in = #$0004 +!pause_index_equip2map_fading_out = #$0005 +!pause_index_equip2map_load_map = #$0006 +!pause_index_equip2map_fading_in = #$0007 +;;; new screen (skip 3 indices used by map patch): +!pause_index_objective_screen = #$000B +!pause_index_map2obj_fading_out = #$000C +!pause_index_map2obj_load_obj = #$000D +!pause_index_map2obj_fading_in = #$000E +!pause_index_obj2map_fading_out = #$000F +!pause_index_obj2map_load_map = #$0010 +!pause_index_obj2map_fading_in = #$0011 + +;;; pause screen button label mode +!pause_screen_button_mode = $0753 +!pause_screen_button_map = #$0000 ; Map screen (SAMUS on the right, OBJ on the left) +!pause_screen_button_nothing = #$0001 ; Unpausing (nothing) +!pause_screen_button_equip = #$0002 ; Equipment screen (MAP on the left) +;;; new button mode: +!pause_screen_button_obj = #$0003 ; Objective screen (MAP on the right) + +;;; Pause screen mode +!pause_screen_mode = $0763 + +;;; pause screen mode values +!pause_screen_mode_map = #$0000 +!pause_screen_mode_equip = #$0001 +;;; new mode: +!pause_screen_mode_obj = #$0002 + +;;; button stuff +!held_buttons = $05E1 +!newly_pressed_buttons = $8F +!l_button = #$0020 +!r_button = #$0010 +!light_up_l_button = #$0001 +!light_up_r_button = #$0002 + +;; dynamic objective text: BG1 tilemap in RAM +!BG1_tilemap = $7E3800 +;; rows [5, 23] of screen +!BG1_tilemap_size = $4c0 + +!line_size #= 32*2 +!check_char = #$28DD ; "-" = char to replace with check (1st occurrence) + +;; RAM +;; current first objective displayed +!obj_index = $073d + +;;; simple helper to instant DMA gfx from a static long source address to VRAM +;;; usable during blank screen only +macro gfxDMA(src, dstVRAM, size) + PHP + SEP #$30 + LDA.b #(&$ff) : STA $2116 ;| VRAM Address Registers (Low) + LDA.b #(>>8) : STA $2117 ;| VRAM Address Registers (High) + LDA.b #$80 : STA $2115 ;} Video Port Control Register - Set VRAM transfer mode to word-access, increment by 1. + ; 0x80 == 0b10000000 => i---ffrr => i=1 (increment when $2119 is accessed), + ; ff=0 (full graphic ??), rr=0 (increment by 2 bytes) + JSL $8091A9 ; Set up a DMA transfer + db $01,$01 ; hard-coded channel 1, options = $01 + db $18 ; DMA target = VRAM + dl + dw + LDA.b #$02 : STA $420B ; start transfer + PLP +endmacro + +;;; helper to DMA load from static long address (*not RAM*) to static long address (RAM) +macro loadRamDMA(src, dstRAMl, size) + PHP + SEP #$30 + ;; write RAM address to proper registers + LDA.b #(&$ff) : STA $2181 + LDA.b #((&$ff00)>>8) : STA $2182 + LDA.b #(>>16) : STA $2183 + ;; set up DMA transfer + JSL $8091A9 + db $01,$00 ; hard-coded channel 1, options = $00 + db $80 ; DMA target = WRAM + dl + dw + LDA #$02 : STA $420B ; start transfer + PLP +endmacro + +;;; simple helper to queue DMA gfx from a static long source address to VRAM +;;; usable at any time, uses X +macro queueGfxDMA(src, dstVRAM, size) + LDX $0330 + LDA.w # : STA.b $D0,x + INX : INX + LDA.W #(&$ffff) : STA.b $D0,x + INX : INX + SEP #$20 + LDA.b #(>>16) : STA.b $D0,x + REP #$20 + INX + LDA.w # : STA.b $D0,x + INX : INX + STX $0330 +endmacro + +;;; call bank 82 funcs from bank 85 +macro callBank82Func(func) + PHX + LDX.w # + DEX + JSL hook_85_to_82 + PLX +endmacro + +org !bank_82_free_space_start +;;; glowing sprites around L/R +glowing_LR_animation: + dw $002A, $002A, $002A, $002A + +new_pause_palettes_func_list: + dw $A796, $A6DF, $A628, update_palette_objective_screen + +update_palette_objective_screen: + JSL update_palette_objective_screen_85 + RTS + +hook_85_to_82: ; X = local func + PEA ret_long-1 + PHX ; stack hack + RTS ; to call X +ret_long: + RTL + +new_pause_index_func_list: ; expanded pause index func list +dw $9120, $9142, $9156, $91AB, $9231, $9186, $91D7, $9200 ; stock 0-7 +dw $9156, $F816, $9200 ; map_area.asm 8-0A +dw func_pause_index_objective_screen, func_pause_index_map2obj_fading_out, func_pause_index_map2obj_load_obj ; 0B-0D +dw func_pause_index_map2obj_fading_in, func_pause_index_obj2map_fading_out, $91D7, $9200 ; 0E-11 + +; bank 82 to 85 calls for indexes 0B-0F +func_pause_index_objective_screen: + JSL func_objective_screen + RTS + +func_pause_index_map2obj_fading_out: + JSL func_map2obj_fading_out + RTS + +func_pause_index_map2obj_load_obj: + JSL func_map2obj_load_obj + RTS + +func_pause_index_map2obj_fading_in: + JSL func_map2obj_fading_in + RTS + +func_pause_index_obj2map_fading_out: + JSL func_obj2map_fading_out + RTS + +print "82 end: ", PC +warnpc !bank_82_free_space_end + +;;; continue in bank 85 for obj screen management code +org !bank_85_free_space_start + +;;; load objective screen title from ROM to RAM +load_obj_tilemap: + %loadRamDMA(obj_bg1_tilemap, !BG1_tilemap+20, 24) + RTL + +;;; update RAM tilemap with objectives text, line by line +!tmp_tile_offset = $12 + +update_objs: + PHB + PHK + PLB + LDA.w #!line_size+2 + STA !tmp_tile_offset + STZ !obj_index + LDY #$ffff + +.draw_obj_text + INY + CPY !n_lines + BEQ .check_objs + LDX !tmp_tile_offset + +.draw_obj_loop + PHX + LDX !obj_index + LDA obj_txt_ptrs, x + INX : INX + STX !obj_index + PLX + CMP #$8000 + BEQ .pad_rest_of_line + STA !BG1_tilemap, x + INX : INX + BRA .draw_obj_loop + +.pad_rest_of_line + JSR pad_0 + BRA .draw_obj_text + +.check_objs +;;; check objectives and add check marks + LDY.w #!line_size*2 ; start of 1st line + LDX #$0000 ; objective counter + +.obj_check_lp + PHX + CPX #$0004 ; check for extra iteration, only happens when animals saved + BEQ .skip_check ; if so, check off animals saved! + JSR check_objective + BEQ .nocheck +.skip_check + TYX + +.find_check + LDA !BG1_tilemap, x + CMP !check_char ; tile to switch? + BEQ .checkmark + INX : INX + CPX #!BG1_tilemap_size ; end of grid? + BCS .leave_eog + BRA .find_check + +.checkmark + LDA #$250B ; check mark (green) + STA !BG1_tilemap, x + +.nocheck + PLX + INX + CPX #$0005 ; done with primary obj's and animals? + BEQ .exit + CPX #$0004 ; finished with primary objectives? + BNE .next_obj + JSR check_animals ; if so, check if animals req'd/done + BCC .exit + +.next_obj + TYA + CLC + ADC.w #!line_size*2 + TAY + BRA .obj_check_lp + +.leave_eog + PLX +.exit + PLB + RTL + +check_objective: ; X = index + PHX + TXA + ASL + TAX + LDA.w #$007E + STA.b $02 + LDA.l !ObjectiveAddrs, X + STA.b $00 + LDA.l !ObjectiveBitmasks, X + STA.b $04 + LDA.b [$00] + PLX + BIT.b $04 + RTS + +;;; pad with 0s until end of line +pad_0: + TXA + AND #$003F + BEQ .end + LDA #$280E : STA.l !BG1_tilemap,x + INX : INX + BRA pad_0 + +.end: + INX : INX + STX !tmp_tile_offset + RTS + +check_animals: + LDA $A1F000 ; save_animals_required_opt (defined in escape.asm) + BEQ .no_animals + LDA $7ED821 + AND $0080 ; animals saved? + BEQ .no_animals + SEC + BRA .leave +.no_animals + CLC +.leave + RTS + +;;; direct DMA of BG1 tilemap to VRAM +blit_objs: + %gfxDMA(!BG1_tilemap, $30a0, !BG1_tilemap_size) + RTL + +;;; DMA tilemap each frame +queue_obj_tilemap: + %queueGfxDMA(!BG1_tilemap, $30a0, !BG1_tilemap_size) + RTL + +;;; check if up/down press, and if applicable, scroll (play sfx for scroll ok/ko) +obj_scroll: + RTL + +;;; check for L or R input and update pause_index && pause_screen_button_mode +check_l_r_pressed: + PHP + REP #$30 + LDA !held_buttons + BIT !l_button + BNE .press_L + BIT !r_button + BNE .press_R + BRA .end + +.press_R: + LDA !pause_screen_button_mode + CMP !pause_screen_button_equip ; if already equipment screen => end + BEQ .end + ;; common actions + LDA $C10A ; $82:C10A db 05,00 + STA $0729 ; Frames to flash L/R/start button on pause screen + LDA !light_up_r_button + STA $0751 ; $0751: Which button lights up for $0729 frames when changing screens from pause screen + + LDA !pause_screen_button_mode + CMP !pause_screen_button_obj + BEQ .move_to_map_from_obj + +.move_to_equip_from_map: + LDA !pause_index_map2equip_fading_out + STA !pause_index + LDA !pause_screen_button_equip + STA !pause_screen_button_mode + BRA .play_sound + +.move_to_map_from_obj: + LDA !pause_index_obj2map_fading_out + STA !pause_index + LDA !pause_screen_button_map + STA !pause_screen_button_mode ; pause_screen_button_mode set to pause_screen_button_equip + BRA .play_sound + +.press_L: + LDA !pause_screen_button_mode ; pause_screen_button_mode, 00 == map screen + CMP !pause_screen_button_obj + BEQ .end ; if already on objective screen => end + ;; common actions + LDA $C10A ; $82:C10A db 05,00 + STA $0729 ; frames to flash L/R/start button on pause screen + LDA !light_up_l_button + STA $0751 + + LDA !pause_screen_button_mode + CMP !pause_screen_button_map + BEQ .move_to_obj_from_map ; if on map screen and L pressed => objective screen + +.move_to_map_from_equip: + LDA !pause_index_equip2map_fading_out + STA !pause_index + STZ !pause_screen_button_mode ; pause_screen_button_mode set to pause_screen_button_map + BRA .play_sound + +.move_to_obj_from_map: + LDA !pause_index_map2obj_fading_out + STA !pause_index + LDA !pause_screen_button_obj + STA !pause_screen_button_mode + +.play_sound: + %callBank82Func($A615) ; $A615: Set pause screen buttons label palettes to show/hide them + LDA #$0038 ;\ + JSL $809049 ;} Queue sound 38h, sound library 1, max queued sounds allowed = 6 (menu option selected) + +.end + PLP + JML $82A59A + +;;; buttons addresses in BG2 +!left_button_top = $7E364A +!left_button_bottom = $7E368A +!right_button_top = $7E366C +!right_button_bottom = $7E36AC + +;;; replace 'MAP' with 'OBJ' in left BG2, put back 'SAMUS' in right BG2 +set_bg2_map_screen: + PHB + PHK + PLB + LDY #$000A + LDX #$0000 +.left_loop_top: + LDA obj_top,x + STA !left_button_top,x + INX : INX + DEY : DEY + BNE .left_loop_top + + LDY #$000A + LDX #$0000 +.left_loop_bottom: + LDA obj_bottom,x + STA !left_button_bottom,x + INX : INX + DEY : DEY + BNE .left_loop_bottom + + LDY #$000A + LDX #$0000 +.right_loop_top: + LDA samus_top,x + STA !right_button_top,x + INX : INX + DEY : DEY + BNE .right_loop_top + + LDY #$000A + LDX #$0000 +.right_loop_bottom: + LDA samus_bottom,x + STA !right_button_bottom,x + INX : INX + DEY : DEY + BNE .right_loop_bottom + LDY #$000A ; vanilla code + LDX #$0000 + PLB + RTL + +;;; put back 'MAP' in BG2 left +set_bg2_equipment_screen: + PHB + PHK + PLB + LDY #$000A + LDX #$0000 +.loop_top: + LDA map_top,x + STA !left_button_top,x + INX : INX + DEY : DEY + BNE .loop_top + + LDY #$000A + LDX #$0000 +.loop_bottom: + LDA map_bottom,x + STA !left_button_bottom,x + INX : INX + DEY : DEY + BNE .loop_bottom + LDY #$000A ; vanilla code + LDX #$0000 + PLB + RTL + +;;; obj: left: grey (obj), right: MAP +;;; map: left: OBJ, right: samus +;;; equip: left: map, right: grey (samus) + +;;; obj/map/samus buttons tiles +obj_top: + dw $28E4, $290C, $290D, $290E, $28E8 +obj_bottom: + dw $28F4, $291C, $291D, $291E, $28F8 + +map_top: + dw $28E4, $28E5, $28E6, $28E7, $28E8 +map_bottom: + dw $28F4, $28F5, $28F6, $28F7, $28F8 + +samus_top: + dw $28E9, $28EA, $28EB, $28EC, $28ED +samus_bottom: + dw $28F9, $28FA, $28FB, $28FC, $28FD + +update_palette_objective_screen_85: + PHP + REP #$30 + PHB + PHK + PLB + + LDY #$000A + LDX #$0000 +.loop_top + LDA map_top,x + STA !right_button_top,x + INX : INX + DEY : DEY + BNE .loop_top + + LDY #$000A + LDX #$0000 +.loop_bottom + LDA map_bottom,x + STA !right_button_bottom,x + INX : INX + DEY : DEY + BNE .loop_bottom + + LDY #$000A + LDX #$0000 +.loop_top2 + LDA !right_button_top,x + AND #$E3FF + ORA #$1000 + STA !right_button_top,x ; Set tilemap palette indices at $7E:364A..53 to 5 (top of MAP) + INX : INX + DEY : DEY + BNE .loop_top2 + + LDY #$000A + LDX #$0000 +.loop_bottom2 + LDA !right_button_bottom,x + AND #$E3FF + ORA #$1000 + STA !right_button_bottom,x ; Set tilemap palette indices at $7E:368A..93 to 5 (bottom of MAP) + INX : INX + DEY : DEY + BNE .loop_bottom2 + + LDY #$000A + LDX #$0000 +.loop_top3 + LDA !left_button_top,x + AND #$E3FF + ORA #$1400 + STA !left_button_top,x ; Set tilemap palette indices at $7E:364A..53 to 5 (grey) + INX : INX + DEY : DEY + BNE .loop_top3 + + LDY #$000A + LDX #$0000 +.loop_bottom3 + LDA !left_button_bottom,x + AND #$E3FF + ORA #$1400 + STA !left_button_bottom,x ; Set tilemap palette indices at $7E:368A..93 to 5 (grey) + INX : INX + DEY : DEY + BNE .loop_bottom3 + PLB + PLP + RTL + +func_objective_screen: + %callBank82Func($A505) ; Checks for L or R input during pause screens + %callBank82Func($A5B7) ; Checks for start input during pause screen + ; disabled for now since content is static + ;JSL obj_scroll + ;JSL update_objs + ;JSL queue_obj_tilemap + LDA !pause_screen_mode_obj + STA !pause_screen_mode ; Pause screen mode = objective screen + RTL + +func_map2obj_fading_out: + %callBank82Func($A56D) ; Updates the flashing buttons when you change pause screens + LDA !fast_pause_menu + BNE .fast + JSL $808924 ; Handle fading out + BRA .next +.fast + JSL fast_fadeout + +.next + SEP #$20 + LDA $51 ;\ + CMP #$80 ;} If not finished fading out: return + BNE .end ;/ + JSL $80834B ; Enable NMI + REP #$20 + STZ $0723 ; Screen fade delay = 0 + STZ $0725 ; Screen fade counter = 0 + INC !pause_index ; Pause index = 6 (equipment screen to map screen - load map screen) + + ;; save RAM 3800-3fff to 5000-57ff + LDA #$7ff + LDX #$3800 + LDY #$5000 + MVN $7E, $7E + +.end: + RTL + +func_map2obj_load_obj: + REP #$30 + ;; backup map's scroll + LDA $B1 + STA $BD ; BG4 X scroll = [BG1 X scroll] + LDA $B3 + STA $BF ; BG4 Y scroll = [BG1 Y scroll] + ;; no scroll + STZ $B1 ; BG1 X scroll = 0 + STZ $B3 ; BG1 Y scroll = 0 + + STZ !obj_index + JSL load_obj_tilemap + JSL update_objs + JSL blit_objs + LDA !pause_screen_mode_obj + STA !pause_screen_mode ; Pause screen mode = objective screen + %callBank82Func($A615) ; Set pause screen button label palettes + STZ $073F + LDA $C10C + STA $072B ; $072B = Fh + LDA #$0001 + STA $0723 ; Screen fade delay = 1 + STA $0725 ; Screen fade counter = 1 + INC !pause_index ; Pause index = B (map screen to objective screen - fading in) + RTL + +func_map2obj_fading_in: + LDA !pause_screen_mode_obj + STA !pause_screen_mode ; Pause screen mode = objective screen + LDA !fast_pause_menu + BNE .fast + JSL $80894D ; Handle fading in + BRA .next +.fast + JSL fast_fadein + +.next + SEP #$20 + LDA $51 ;\ + CMP #$0F ; If not finished fading in: return + BNE .end ;/ + REP #$20 + STZ $0723 ; Screen fade delay = 0 + STZ $0725 ; Screen fade counter = 0 + LDA !pause_screen_button_obj + STA !pause_screen_button_mode + LDA !pause_index_objective_screen ; index = objective + STA !pause_index +.end: + RTL + +func_obj2map_fading_out: + ;; fade out to map + %callBank82Func($A56D) ; Updates the flashing buttons when you change pause screens + LDA !fast_pause_menu + BNE .fast + JSL $808924 ; Handle fading out + BRA .next +.fast + JSL fast_fadeout + +.next + SEP #$20 + LDA $51 ;\ + CMP #$80 ; If not finished fading out: return + BNE .end ;/ + JSL $80834B ; Enable NMI + REP #$20 + STZ $0723 ; Screen fade delay = 0 + STZ $0725 ; Screen fade counter = 0 + INC !pause_index ; Pause index = D (obj screen to map screen - load map screen) + + ;; restore RAM 3800-3fff from 5000-57ff (needed for equipment screen) + LDA #$7FF + LDX #$5000 + LDY #$3800 + MVN $7E, $7E + +.end: + RTL + +; Variation of $808924 that goes twice as fast: +fast_fadeout: + PHP + SEP #$30 + LDA $51 + AND #$0F ; If (brightness) = 0: return + BEQ .done + DEC A + BEQ .force_blank + DEC A + BNE .store +.force_blank: + LDA #$80 +.store: + STA $51 +.done: + PLP + RTL + +; Variation of $80894D that goes twice as fast: +fast_fadein: + PHP + SEP #$30 + + LDA $51 + INC A + AND #$0F ; If brightness is not max: + BEQ .done + STA $51 ; Increment brightness (disable forced blank) + + INC A + AND #$0F ; If brightness is not max: + BEQ .done + STA $51 ; Increment brightness (disable forced blank) +.done: + PLP + RTL + +obj_bg1_tilemap: + ;; line 0 : objectives screen "window title" + dw $280F, "OBJECTIVES", $280F + +print "85 end: ", pc +warnpc !bank_85_free_space_end + +org !bank_B6_free_space_start +obj_txt_ptrs: +;; max size for single screen: (30 char dw + terminating dw) * 18 lines = 1116 bytes + +warnpc !bank_B6_free_space_end + +; objective screen tiles +; 'Q' +org $b69a00 + db $7C, $00, $C6, $00, $C6, $00, $C6, $00, $DA, $00, $CC, $00, $76, $00, $00, $00 + db $FF, $7C, $FF, $C6, $FF, $C6, $FF, $C6, $FF, $DA, $FF, $CC, $FF, $76, $FF, $00 + +; '.' +org $b69b60 + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $18, $00, $18, $00, $00, $00 + db $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $00, $FF, $18, $FF, $18, $FF, $00 + +; '/' +org $b69b80 + db $03, $00, $06, $00, $0C, $00, $18, $00, $30, $00, $60, $00, $C0, $00, $00, $00 + db $FF, $03, $FF, $06, $FF, $0C, $FF, $18, $FF, $30, $FF, $60, $FF, $C0, $FF, $00 + +; '!' +org $b69be0 + db $18, $00, $18, $00, $18, $00, $18, $00, $00, $00, $18, $00, $18, $00, $00, $00 + db $FF, $18, $FF, $18, $FF, $18, $FF, $18, $FF, $00, $FF, $18, $FF, $18, $FF, $00 + + +; check mark +org $b6a160 + db $01, $00, $03, $00, $06, $00, $8C, $00, $D8, $00, $70, $00, $20, $00, $00, $00 + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + +; top of 'OBJ' button +org $b6a180 + db $00, $FF, $00, $00, $FF, $FF, $FF, $FF, $F8, $F8, $F0, $F0, $F2, $F2, $F2, $F2 + db $FF, $FF, $FF, $FF, $00, $FF, $00, $FF, $07, $F8, $0F, $F0, $0D, $F2, $0D, $F2 + db $00, $FF, $00, $00, $FF, $FF, $FF, $FF, $C1, $C1, $4C, $4C, $4C, $4C, $41, $41 + db $FF, $FF, $FF, $FF, $00, $FF, $00, $FF, $3E, $C1, $B3, $4C, $B3, $4C, $BE, $41 + db $00, $FF, $00, $00, $FF, $FF, $FF, $FF, $F3, $F3, $F3, $F3, $F3, $F3, $F3, $F3 + db $FF, $FF, $FF, $FF, $00, $FF, $00, $FF, $0C, $F3, $0C, $F3, $0C, $F3, $0C, $F3 + +; bottom of 'OBJ' button +org $b6a380 + db $F2, $F2, $F2, $F2, $F0, $F0, $F8, $F8, $FF, $FF, $00, $FF, $00, $00, $00, $FF + db $0D, $F2, $0D, $F2, $0F, $F0, $07, $F8, $00, $FF, $FF, $00, $FF, $FF, $FF, $FF + db $41, $41, $4C, $4C, $4C, $4C, $C1, $C1, $FF, $FF, $00, $FF, $00, $00, $00, $FF + db $BE, $41, $B3, $4C, $B3, $4C, $3E, $C1, $00, $FF, $FF, $00, $FF, $FF, $FF, $FF + db $93, $93, $93, $93, $83, $83, $C7, $C7, $FF, $FF, $00, $FF, $00, $00, $00, $FF + db $6C, $93, $6C, $93, $7C, $83, $38, $C7, $00, $FF, $FF, $00, $FF, $FF, $FF, $FF diff --git a/patches/src/tables/pause_menu_objectives_chars.tbl b/patches/src/tables/pause_menu_objectives_chars.tbl new file mode 100644 index 0000000000..4a6568cbd8 --- /dev/null +++ b/patches/src/tables/pause_menu_objectives_chars.tbl @@ -0,0 +1,42 @@ +2800=0 +2801=1 +2802=2 +2803=3 +2804=4 +2805=5 +2806=6 +2807=7 +2808=8 +2809=9 +280E= +28C0=A +28C1=B +28C2=C +28C3=D +28C4=E +28C5=F +28C6=G +28C7=H +28C8=I +28C9=J +28CA=K +28CB=L +28CC=M +28CD=N +28CE=O +28CF=P +28D0=Q +28D1=R +28D2=S +28D3=T +28D4=U +28D5=V +28D6=W +28D7=X +28D8=Y +28D9=Z +28DA=. +28DC=/ +28DD=- +28DE=? +28DF=! diff --git a/rust/maprando/src/customize.rs b/rust/maprando/src/customize.rs index cc3b36a332..241a584fe2 100644 --- a/rust/maprando/src/customize.rs +++ b/rust/maprando/src/customize.rs @@ -380,6 +380,7 @@ pub fn customize_rom( apply_ips_patch(rom, Path::new("../patches/ips/reserve_hud.ips"))?; // Make used reserve tiles empty, for when they appear when transitioning to and from Kraid's room // Since the current IPS creation tool doesn't include settings these addresses to zero, it has to be done here instead + // TODO: this may no longer be necessary with the new method of building IPS with build_ips.py for i in 0..6 { rom.write_n(snes2pc(0xE20000 + (0x10000 * i) + 0xC330), &[0x00; 0x10])?; rom.write_n(snes2pc(0xE20000 + (0x10000 * i) + 0xC460), &[0x00; 0x10])?; diff --git a/rust/maprando/src/patch.rs b/rust/maprando/src/patch.rs index af624d1b51..2ede20f32d 100644 --- a/rust/maprando/src/patch.rs +++ b/rust/maprando/src/patch.rs @@ -388,6 +388,7 @@ fn apply_orig_ips_patches(rom: &mut Rom, randomization: &Randomization) -> Resul "mb_barrier_clear", "mb_left_entrance", "gray_doors", + "pause_menu_objectives", // For the pause menu tileset changes (for green checkmark, etc.) ]; patches.push("hud_expansion_opaque"); for patch_name in patches { @@ -465,6 +466,7 @@ impl<'a> Patcher<'a> { "beam_doors", "horizontal_door_fix", "samus_tiles_optim_animated_tiles_fix", + "pause_menu_objectives", ]; if self.randomization.settings.other_settings.ultra_low_qol { @@ -539,6 +541,9 @@ impl<'a> Patcher<'a> { .fast_pause_menu { patches.push("fast_pause_menu"); + self.rom.write_u16(snes2pc(0x82fffc), 0xFFFF)?; + } else { + self.rom.write_u16(snes2pc(0x82fffc), 0x0000)?; } match self.randomization.settings.other_settings.wall_jump { @@ -2774,6 +2779,109 @@ impl<'a> Patcher<'a> { Ok(()) } + + fn write_objective_data(&mut self) -> Result<()> { + let mut obj_text: Vec = vec![]; + for obj in &self.randomization.objectives { + obj_text.push("".to_string()); // blank line + let text = match obj { + Objective::AcidChozoStatue => "ACTIVATE ACID CHOZO STATUE", + Objective::BabyKraidRoom => "CLEAR BABY KRAID ROOM", + Objective::BombTorizo => "DEFEAT BOMB TORIZO", + Objective::Botwoon => "DEFEAT BOTWOON", + Objective::BowlingStatue => "ACTIVATE BOWLING STATUE", + Objective::Crocomire => "DEFEAT CROCOMIRE", + Objective::Draygon => "DEFEAT DRAYGON", + Objective::GoldenTorizo => "DEFEAT GOLDEN TORIZO", + Objective::Kraid => "DEFEAT KRAID", + Objective::MetalPiratesRoom => "CLEAR METAL PIRATES ROOM", + Objective::MetroidRoom1 => "CLEAR METROID ROOM 1", + Objective::MetroidRoom2 => "CLEAR METROID ROOM 2", + Objective::MetroidRoom3 => "CLEAR METROID ROOM 3", + Objective::MetroidRoom4 => "CLEAR METROID ROOM 4", + Objective::Phantoon => "DEFEAT PHANTOON", + Objective::PitRoom => "CLEAR PIT ROOM", + Objective::PlasmaRoom => "CLEAR PLASMA ROOM", + Objective::SporeSpawn => "DEFEAT SPORE SPAWN", + Objective::Ridley => "DEFEAT RIDLEY", + }; + obj_text.push(" - ".to_string() + text); + } + if self.randomization.settings.save_animals == SaveAnimals::Yes { + obj_text.push("".to_string()); + obj_text.push(" - SAVE THE ANIMALS!".to_string()); + } else if self.randomization.settings.save_animals == SaveAnimals::Random { + obj_text.push("".to_string()); + obj_text.push(" - SAVE THE ANIMALS?".to_string()); + } + + let char_mapping: HashMap = vec![ + ('0', 0x2800), + ('1', 0x2801), + ('2', 0x2802), + ('3', 0x2803), + ('4', 0x2804), + ('5', 0x2805), + ('6', 0x2806), + ('7', 0x2807), + ('8', 0x2808), + ('9', 0x2809), + (' ', 0x280E), + ('A', 0x28C0), + ('B', 0x28C1), + ('C', 0x28C2), + ('D', 0x28C3), + ('E', 0x28C4), + ('F', 0x28C5), + ('G', 0x28C6), + ('H', 0x28C7), + ('I', 0x28C8), + ('J', 0x28C9), + ('K', 0x28CA), + ('L', 0x28CB), + ('M', 0x28CC), + ('N', 0x28CD), + ('O', 0x28CE), + ('P', 0x28CF), + ('Q', 0x28D0), + ('R', 0x28D1), + ('S', 0x28D2), + ('T', 0x28D3), + ('U', 0x28D4), + ('V', 0x28D5), + ('W', 0x28D6), + ('X', 0x28D7), + ('Y', 0x28D8), + ('Z', 0x28D9), + ('.', 0x28DA), + ('/', 0x28DC), + ('-', 0x28DD), + ('?', 0x28DE), + ('!', 0x28DF), + ] + .into_iter() + .collect(); + + let mut addr = snes2pc(0xB6F200); + for line in &obj_text { + for c in line.chars() { + let tile_word = char_mapping[&c]; + self.rom.write_u16(addr, tile_word as isize)?; + addr += 2; + } + self.rom.write_u16(addr, 0x8000)?; // line terminator + addr += 2; + } + + // Add empty lines for unused rows: + for _ in 0..(18 - obj_text.len()) { + self.rom.write_u16(addr, 0x8000)?; // line terminator + addr += 2; + } + + assert!(addr < snes2pc(0xB6F660)); + Ok(()) + } } fn get_other_door_ptr_pair_map(map: &Map) -> HashMap { @@ -2846,6 +2954,7 @@ pub fn make_rom( patcher.apply_miscellaneous_patches()?; patcher.apply_mother_brain_fight_patches()?; patcher.write_walljump_item_graphics()?; + patcher.write_objective_data()?; patcher.apply_seed_identifiers()?; patcher.apply_credits()?; if !randomization.settings.other_settings.ultra_low_qol { diff --git a/scripts/build_ips.py b/scripts/build_ips.py index eef41ba8d2..54d1b195a7 100644 --- a/scripts/build_ips.py +++ b/scripts/build_ips.py @@ -91,9 +91,13 @@ def write_ips_patch(ips_path, changed_byte_dict, chunks): ips_path = f"{OUTPUT_PATH}/{base_filename}.ips" src_modified_ts = os.path.getmtime(asm_path) - ips_modified_ts = os.path.getmtime(ips_path) + ips_modified_ts = None + try: + ips_modified_ts = os.path.getmtime(ips_path) + except FileNotFoundError as e: + pass - if src_modified_ts > ips_modified_ts or args.verify: + if ips_modified_ts is None or src_modified_ts > ips_modified_ts or args.verify: logging.info(f"Assembling {asm_path}") changed_bytes = {} run_asar(asm_path, 0x00, changed_bytes)