From debc0016fd5db4580a0b7c1a782039d74d3761e7 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 15:51:17 +0000 Subject: [PATCH 01/16] use ld_addrs.h in load_world_script_api Renamed from load_map_script_lib --- .../code_341d0_len_20d0/load_map_by_IDs.s | 98 +++++++++---------- .../code_ebd0_len_6a0/func_80033BC0.s | 54 +++++----- .../code_f270_len_1190/func_80034C3C.s | 90 ++++++++--------- include/functions.h | 1 + include/variables.h | 4 - src/code_341d0_len_20d0.c | 5 +- .../script_api/7E0E80.c} | 0 .../script_api/7E2AA0.c} | 0 .../script_api/7E3700.c} | 0 tools/n64splat | 2 +- tools/splat.yaml | 6 +- undefined_syms.txt | 4 - 12 files changed, 130 insertions(+), 134 deletions(-) rename src/{code_7e0e80.c => world/script_api/7E0E80.c} (100%) rename src/{code_7E2AA0.c => world/script_api/7E2AA0.c} (100%) rename src/{code_7E3700.c => world/script_api/7E3700.c} (100%) diff --git a/asm/nonmatchings/code_341d0_len_20d0/load_map_by_IDs.s b/asm/nonmatchings/code_341d0_len_20d0/load_map_by_IDs.s index 0268832392..34eb98d497 100644 --- a/asm/nonmatchings/code_341d0_len_20d0/load_map_by_IDs.s +++ b/asm/nonmatchings/code_341d0_len_20d0/load_map_by_IDs.s @@ -32,24 +32,24 @@ glabel load_map_by_IDs /* 35B60 8005A760 0C047624 */ jal func_8011D890 /* 35B64 8005A764 00108403 */ sra $s0, $s0, 0x10 /* 35B68 8005A768 0C048C2E */ jal clear_dynamic_entity_list -/* 35B6C 8005A76C 00000000 */ nop +/* 35B6C 8005A76C 00000000 */ nop /* 35B70 8005A770 0C0B0C77 */ jal clear_script_list -/* 35B74 8005A774 00000000 */ nop +/* 35B74 8005A774 00000000 */ nop /* 35B78 8005A778 12000005 */ beqz $s0, .L8005A790 /* 35B7C 8005A77C 24020001 */ addiu $v0, $zero, 1 /* 35B80 8005A780 12020008 */ beq $s0, $v0, .L8005A7A4 -/* 35B84 8005A784 00000000 */ nop +/* 35B84 8005A784 00000000 */ nop /* 35B88 8005A788 080169F0 */ j .L8005A7C0 -/* 35B8C 8005A78C 00000000 */ nop +/* 35B8C 8005A78C 00000000 */ nop .L8005A790: /* 35B90 8005A790 0C0514E4 */ jal clear_area_flags -/* 35B94 8005A794 00000000 */ nop +/* 35B94 8005A794 00000000 */ nop /* 35B98 8005A798 8E420000 */ lw $v0, ($s2) /* 35B9C 8005A79C 080169F0 */ j .L8005A7C0 /* 35BA0 8005A7A0 A0400167 */ sb $zero, 0x167($v0) .L8005A7A4: /* 35BA4 8005A7A4 0C00AD24 */ jal fio_deserialize_state -/* 35BA8 8005A7A8 00000000 */ nop +/* 35BA8 8005A7A8 00000000 */ nop /* 35BAC 8005A7AC 8E420000 */ lw $v0, ($s2) /* 35BB0 8005A7B0 94510086 */ lhu $s1, 0x86($v0) /* 35BB4 8005A7B4 9453008C */ lhu $s3, 0x8c($v0) @@ -93,17 +93,17 @@ glabel load_map_by_IDs /* 35C48 8005A848 3C01800A */ lui $at, 0x800a /* 35C4C 8005A84C AC3241E0 */ sw $s2, 0x41e0($at) /* 35C50 8005A850 10A00005 */ beqz $a1, .L8005A868 -/* 35C54 8005A854 00000000 */ nop +/* 35C54 8005A854 00000000 */ nop /* 35C58 8005A858 3C04800E */ lui $a0, 0x800e /* 35C5C 8005A85C 24849668 */ addiu $a0, $a0, -0x6998 /* 35C60 8005A860 0C01BB50 */ jal strcpy -/* 35C64 8005A864 00000000 */ nop +/* 35C64 8005A864 00000000 */ nop .L8005A868: -/* 35C68 8005A868 0C0169B0 */ jal load_map_script_lib -/* 35C6C 8005A86C 00000000 */ nop +/* 35C68 8005A868 0C0169B0 */ jal load_world_script_api +/* 35C6C 8005A86C 00000000 */ nop /* 35C70 8005A870 8E440008 */ lw $a0, 8($s2) /* 35C74 8005A874 10800004 */ beqz $a0, .L8005A888 -/* 35C78 8005A878 00000000 */ nop +/* 35C78 8005A878 00000000 */ nop /* 35C7C 8005A87C 8E45000C */ lw $a1, 0xc($s2) /* 35C80 8005A880 0C00A5CF */ jal dma_copy /* 35C84 8005A884 8E460010 */ lw $a2, 0x10($s2) @@ -128,13 +128,13 @@ glabel load_map_by_IDs /* 35CC8 8005A8C8 3C13800A */ lui $s3, 0x800a /* 35CCC 8005A8CC 267341E8 */ addiu $s3, $s3, 0x41e8 /* 35CD0 8005A8D0 10400004 */ beqz $v0, .L8005A8E4 -/* 35CD4 8005A8D4 00000000 */ nop +/* 35CD4 8005A8D4 00000000 */ nop /* 35CD8 8005A8D8 0040F809 */ jalr $v0 -/* 35CDC 8005A8DC 00000000 */ nop +/* 35CDC 8005A8DC 00000000 */ nop /* 35CE0 8005A8E0 0040A02D */ daddu $s4, $v0, $zero .L8005A8E4: /* 35CE4 8005A8E4 16800015 */ bnez $s4, .L8005A93C -/* 35CE8 8005A8E8 00000000 */ nop +/* 35CE8 8005A8E8 00000000 */ nop /* 35CEC 8005A8EC 3C04800E */ lui $a0, 0x800e /* 35CF0 8005A8F0 24849230 */ addiu $a0, $a0, -0x6dd0 /* 35CF4 8005A8F4 0C016B3A */ jal load_asset_by_name @@ -158,78 +158,78 @@ glabel load_map_by_IDs .L8005A93C: /* 35D3C 8005A93C 8E420014 */ lw $v0, 0x14($s2) /* 35D40 8005A940 10400005 */ beqz $v0, .L8005A958 -/* 35D44 8005A944 00000000 */ nop +/* 35D44 8005A944 00000000 */ nop /* 35D48 8005A948 3C04800E */ lui $a0, 0x800e /* 35D4C 8005A94C 24849668 */ addiu $a0, $a0, -0x6998 /* 35D50 8005A950 0C05175C */ jal load_map_bg -/* 35D54 8005A954 00000000 */ nop +/* 35D54 8005A954 00000000 */ nop .L8005A958: /* 35D58 8005A958 0C00B458 */ jal func_8002D160 -/* 35D5C 8005A95C 00000000 */ nop +/* 35D5C 8005A95C 00000000 */ nop /* 35D60 8005A960 0C0AC81E */ jal func_802B2078 -/* 35D64 8005A964 00000000 */ nop +/* 35D64 8005A964 00000000 */ nop /* 35D68 8005A968 0C05259C */ jal func_80149670 /* 35D6C 8005A96C 0000202D */ daddu $a0, $zero, $zero /* 35D70 8005A970 0C048C2E */ jal clear_dynamic_entity_list -/* 35D74 8005A974 00000000 */ nop +/* 35D74 8005A974 00000000 */ nop /* 35D78 8005A978 0C0B0C77 */ jal clear_script_list -/* 35D7C 8005A97C 00000000 */ nop +/* 35D7C 8005A97C 00000000 */ nop /* 35D80 8005A980 0C00B7BD */ jal create_cameras_a -/* 35D84 8005A984 00000000 */ nop +/* 35D84 8005A984 00000000 */ nop /* 35D88 8005A988 3C108007 */ lui $s0, %hi(gGameStatusPtr) /* 35D8C 8005A98C 2610419C */ addiu $s0, $s0, %lo(gGameStatusPtr) /* 35D90 8005A990 8E020000 */ lw $v0, ($s0) /* 35D94 8005A994 0C0B763E */ jal func_802DD8F8 /* 35D98 8005A998 80440084 */ lb $a0, 0x84($v0) /* 35D9C 8005A99C 0C047889 */ jal func_8011E224 -/* 35DA0 8005A9A0 00000000 */ nop +/* 35DA0 8005A9A0 00000000 */ nop /* 35DA4 8005A9A4 0C0482EC */ jal clear_virtual_models -/* 35DA8 8005A9A8 00000000 */ nop +/* 35DA8 8005A9A8 00000000 */ nop /* 35DAC 8005A9AC 0C00E12F */ jal clear_npcs -/* 35DB0 8005A9B0 00000000 */ nop +/* 35DB0 8005A9B0 00000000 */ nop /* 35DB4 8005A9B4 0C050440 */ jal func_80141100 -/* 35DB8 8005A9B8 00000000 */ nop +/* 35DB8 8005A9B8 00000000 */ nop /* 35DBC 8005A9BC 0C0515A0 */ jal clear_trigger_data -/* 35DC0 8005A9C0 00000000 */ nop +/* 35DC0 8005A9C0 00000000 */ nop /* 35DC4 8005A9C4 0C045751 */ jal clear_model_data -/* 35DC8 8005A9C8 00000000 */ nop +/* 35DC8 8005A9C8 00000000 */ nop /* 35DCC 8005A9CC 0C052010 */ jal func_80148040 -/* 35DD0 8005A9D0 00000000 */ nop +/* 35DD0 8005A9D0 00000000 */ nop /* 35DD4 8005A9D4 0C05177E */ jal func_80145DF8 -/* 35DD8 8005A9D8 00000000 */ nop +/* 35DD8 8005A9D8 00000000 */ nop /* 35DDC 8005A9DC 8E020000 */ lw $v0, ($s0) /* 35DE0 8005A9E0 804300A8 */ lb $v1, 0xa8($v0) /* 35DE4 8005A9E4 2402FFFF */ addiu $v0, $zero, -1 /* 35DE8 8005A9E8 14620003 */ bne $v1, $v0, .L8005A9F8 -/* 35DEC 8005A9EC 00000000 */ nop +/* 35DEC 8005A9EC 00000000 */ nop /* 35DF0 8005A9F0 0C04E062 */ jal func_80138188 -/* 35DF4 8005A9F4 00000000 */ nop +/* 35DF4 8005A9F4 00000000 */ nop .L8005A9F8: /* 35DF8 8005A9F8 16800005 */ bnez $s4, .L8005AA10 -/* 35DFC 8005A9FC 00000000 */ nop +/* 35DFC 8005A9FC 00000000 */ nop /* 35E00 8005AA00 0C016BE5 */ jal initialize_collision -/* 35E04 8005AA04 00000000 */ nop +/* 35E04 8005AA04 00000000 */ nop /* 35E08 8005AA08 0C016BF0 */ jal load_hit_asset -/* 35E0C 8005AA0C 00000000 */ nop +/* 35E0C 8005AA0C 00000000 */ nop .L8005AA10: /* 35E10 8005AA10 0C01CACC */ jal func_80072B30 -/* 35E14 8005AA14 00000000 */ nop +/* 35E14 8005AA14 00000000 */ nop /* 35E18 8005AA18 0C00F900 */ jal clear_encounter_status -/* 35E1C 8005AA1C 00000000 */ nop +/* 35E1C 8005AA1C 00000000 */ nop /* 35E20 8005AA20 0C04432E */ jal clear_entity_data /* 35E24 8005AA24 24040001 */ addiu $a0, $zero, 1 /* 35E28 8005AA28 0C016727 */ jal func_80059C9C -/* 35E2C 8005AA2C 00000000 */ nop +/* 35E2C 8005AA2C 00000000 */ nop /* 35E30 8005AA30 0C037F14 */ jal clear_player_status -/* 35E34 8005AA34 00000000 */ nop +/* 35E34 8005AA34 00000000 */ nop /* 35E38 8005AA38 0C037F1D */ jal func_800DFC74 -/* 35E3C 8005AA3C 00000000 */ nop +/* 35E3C 8005AA3C 00000000 */ nop /* 35E40 8005AA40 0C03AD1D */ jal partner_reset_data -/* 35E44 8005AA44 00000000 */ nop +/* 35E44 8005AA44 00000000 */ nop /* 35E48 8005AA48 0C048D9D */ jal clear_printers -/* 35E4C 8005AA4C 00000000 */ nop +/* 35E4C 8005AA4C 00000000 */ nop /* 35E50 8005AA50 0C04C3FC */ jal clear_item_entity_data -/* 35E54 8005AA54 00000000 */ nop +/* 35E54 8005AA54 00000000 */ nop /* 35E58 8005AA58 3C028011 */ lui $v0, %hi(gPlayerStatus) /* 35E5C 8005AA5C 2442EFC8 */ addiu $v0, $v0, %lo(gPlayerStatus) /* 35E60 8005AA60 C4400084 */ lwc1 $f0, 0x84($v0) @@ -242,16 +242,16 @@ glabel load_map_by_IDs /* 35E7C 8005AA7C 0C0525FF */ jal func_801497FC /* 35E80 8005AA80 8C84FF60 */ lw $a0, -0xa0($a0) /* 35E84 8005AA84 0C052580 */ jal func_80149600 -/* 35E88 8005AA88 00000000 */ nop +/* 35E88 8005AA88 00000000 */ nop /* 35E8C 8005AA8C 1680000B */ bnez $s4, .L8005AABC -/* 35E90 8005AA90 00000000 */ nop +/* 35E90 8005AA90 00000000 */ nop /* 35E94 8005AA94 3C04800B */ lui $a0, 0x800b /* 35E98 8005AA98 24840CF0 */ addiu $a0, $a0, 0xcf0 /* 35E9C 8005AA9C 0C016B74 */ jal get_asset_offset /* 35EA0 8005AAA0 27A50030 */ addiu $a1, $sp, 0x30 /* 35EA4 8005AAA4 8E640000 */ lw $a0, ($s3) /* 35EA8 8005AAA8 10800004 */ beqz $a0, .L8005AABC -/* 35EAC 8005AAAC 00000000 */ nop +/* 35EAC 8005AAAC 00000000 */ nop /* 35EB0 8005AAB0 8FA60030 */ lw $a2, 0x30($sp) /* 35EB4 8005AAB4 0C046B52 */ jal load_data_for_models /* 35EB8 8005AAB8 0040282D */ daddu $a1, $v0, $zero @@ -260,9 +260,9 @@ glabel load_map_by_IDs /* 35EC0 8005AAC0 50800005 */ beql $a0, $zero, .L8005AAD8 /* 35EC4 8005AAC4 24040128 */ addiu $a0, $zero, 0x128 /* 35EC8 8005AAC8 0C05178A */ jal read_background_size -/* 35ECC 8005AACC 00000000 */ nop +/* 35ECC 8005AACC 00000000 */ nop /* 35ED0 8005AAD0 08016ABA */ j .L8005AAE8 -/* 35ED4 8005AAD4 00000000 */ nop +/* 35ED4 8005AAD4 00000000 */ nop .L8005AAD8: /* 35ED8 8005AAD8 240500C8 */ addiu $a1, $zero, 0xc8 /* 35EDC 8005AADC 2406000C */ addiu $a2, $zero, 0xc @@ -306,9 +306,9 @@ glabel load_map_by_IDs /* 35F6C 8005AB6C 24070106 */ addiu $a3, $zero, 0x106 .L8005AB70: /* 35F70 8005AB70 0C00B8C5 */ jal set_cam_viewport -/* 35F74 8005AB74 00000000 */ nop +/* 35F74 8005AB74 00000000 */ nop /* 35F78 8005AB78 0C039E4D */ jal initialize_status_menu -/* 35F7C 8005AB7C 00000000 */ nop +/* 35F7C 8005AB7C 00000000 */ nop /* 35F80 8005AB80 0000282D */ daddu $a1, $zero, $zero /* 35F84 8005AB84 00A0302D */ daddu $a2, $a1, $zero /* 35F88 8005AB88 3C108007 */ lui $s0, %hi(gGameStatusPtr) diff --git a/asm/nonmatchings/code_ebd0_len_6a0/func_80033BC0.s b/asm/nonmatchings/code_ebd0_len_6a0/func_80033BC0.s index 9b1cfbade8..d7331898fe 100644 --- a/asm/nonmatchings/code_ebd0_len_6a0/func_80033BC0.s +++ b/asm/nonmatchings/code_ebd0_len_6a0/func_80033BC0.s @@ -33,9 +33,9 @@ glabel func_80033BC0 /* F030 80033C30 0C018030 */ jal nuContRmbForceStopEnd /* F034 80033C34 AC820000 */ sw $v0, ($a0) /* F038 80033C38 0C05260E */ jal func_80149838 -/* F03C 80033C3C 00000000 */ nop +/* F03C 80033C3C 00000000 */ nop /* F040 80033C40 0C016AFA */ jal get_current_map_header -/* F044 80033C44 00000000 */ nop +/* F044 80033C44 00000000 */ nop /* F048 80033C48 3C108007 */ lui $s0, %hi(gGameStatusPtr) /* F04C 80033C4C 2610419C */ addiu $s0, $s0, %lo(gGameStatusPtr) /* F050 80033C50 8E040000 */ lw $a0, ($s0) @@ -53,7 +53,7 @@ glabel func_80033BC0 /* F080 80033C80 0C016BE1 */ jal func_8005AF84 /* F084 80033C84 A0400070 */ sb $zero, 0x70($v0) /* F088 80033C88 0C00AB37 */ jal func_8002ACDC -/* F08C 80033C8C 00000000 */ nop +/* F08C 80033C8C 00000000 */ nop /* F090 80033C90 0C05259C */ jal func_80149670 /* F094 80033C94 24040001 */ addiu $a0, $zero, 1 /* F098 80033C98 8E030000 */ lw $v1, ($s0) @@ -65,37 +65,37 @@ glabel func_80033BC0 /* F0B0 80033CB0 0C0B763E */ jal func_802DD8F8 /* F0B4 80033CB4 80440084 */ lb $a0, 0x84($v0) /* F0B8 80033CB8 0C0457FA */ jal init_model_data -/* F0BC 80033CBC 00000000 */ nop +/* F0BC 80033CBC 00000000 */ nop /* F0C0 80033CC0 0C05203C */ jal func_801480F0 -/* F0C4 80033CC4 00000000 */ nop +/* F0C4 80033CC4 00000000 */ nop /* F0C8 80033CC8 0C048316 */ jal init_virtual_models -/* F0CC 80033CCC 00000000 */ nop +/* F0CC 80033CCC 00000000 */ nop /* F0D0 80033CD0 0C0478C4 */ jal func_8011E310 -/* F0D4 80033CD4 00000000 */ nop +/* F0D4 80033CD4 00000000 */ nop /* F0D8 80033CD8 0C048C45 */ jal init_dynamic_entity_list -/* F0DC 80033CDC 00000000 */ nop +/* F0DC 80033CDC 00000000 */ nop /* F0E0 80033CE0 0000202D */ daddu $a0, $zero, $zero /* F0E4 80033CE4 0C0514BA */ jal func_801452E8 /* F0E8 80033CE8 0080282D */ daddu $a1, $a0, $zero /* F0EC 80033CEC 0C0504C0 */ jal init_menu_icon_list -/* F0F0 80033CF0 00000000 */ nop +/* F0F0 80033CF0 00000000 */ nop /* F0F4 80033CF4 0C04C433 */ jal init_item_entity_list -/* F0F8 80033CF8 00000000 */ nop +/* F0F8 80033CF8 00000000 */ nop /* F0FC 80033CFC 0C0B0CBB */ jal init_script_list -/* F100 80033D00 00000000 */ nop +/* F100 80033D00 00000000 */ nop /* F104 80033D04 0C00E14B */ jal init_npc_list -/* F108 80033D08 00000000 */ nop +/* F108 80033D08 00000000 */ nop /* F10C 80033D0C 0C044396 */ jal func_80110E58 -/* F110 80033D10 00000000 */ nop +/* F110 80033D10 00000000 */ nop /* F114 80033D14 0C0515CA */ jal init_trigger_list -/* F118 80033D18 00000000 */ nop +/* F118 80033D18 00000000 */ nop /* F11C 80033D1C 8E020000 */ lw $v0, ($s0) /* F120 80033D20 904200AA */ lbu $v0, 0xaa($v0) /* F124 80033D24 30420001 */ andi $v0, $v0, 1 /* F128 80033D28 10400008 */ beqz $v0, .L80033D4C -/* F12C 80033D2C 00000000 */ nop +/* F12C 80033D2C 00000000 */ nop /* F130 80033D30 0C00EC6C */ jal func_8003B1B0 -/* F134 80033D34 00000000 */ nop +/* F134 80033D34 00000000 */ nop /* F138 80033D38 3C02800A */ lui $v0, 0x800a /* F13C 80033D3C 8C420904 */ lw $v0, 0x904($v0) /* F140 80033D40 24040011 */ addiu $a0, $zero, 0x11 @@ -106,8 +106,8 @@ glabel func_80033BC0 /* F150 80033D50 2442F290 */ addiu $v0, $v0, %lo(gPlayerData) /* F154 80033D54 0C03AC80 */ jal func_800EB200 /* F158 80033D58 80440012 */ lb $a0, 0x12($v0) -/* F15C 80033D5C 0C0169B0 */ jal load_map_script_lib -/* F160 80033D60 00000000 */ nop +/* F15C 80033D5C 0C0169B0 */ jal load_world_script_api +/* F160 80033D60 00000000 */ nop /* F164 80033D64 3C04800E */ lui $a0, 0x800e /* F168 80033D68 24849230 */ addiu $a0, $a0, -0x6dd0 /* F16C 80033D6C 0C016B3A */ jal load_asset_by_name @@ -120,12 +120,12 @@ glabel func_80033BC0 /* F188 80033D88 0C00AB1E */ jal general_heap_free /* F18C 80033D8C 0200202D */ daddu $a0, $s0, $zero /* F190 80033D90 0C016BE5 */ jal initialize_collision -/* F194 80033D94 00000000 */ nop +/* F194 80033D94 00000000 */ nop /* F198 80033D98 0C016C16 */ jal load_collision -/* F19C 80033D9C 00000000 */ nop +/* F19C 80033D9C 00000000 */ nop /* F1A0 80033DA0 8E240008 */ lw $a0, 8($s1) /* F1A4 80033DA4 10800004 */ beqz $a0, .L80033DB8 -/* F1A8 80033DA8 00000000 */ nop +/* F1A8 80033DA8 00000000 */ nop /* F1AC 80033DAC 8E25000C */ lw $a1, 0xc($s1) /* F1B0 80033DB0 0C00A5CF */ jal dma_copy /* F1B4 80033DB4 8E260010 */ lw $a2, 0x10($s1) @@ -136,9 +136,9 @@ glabel func_80033BC0 /* F1C4 80033DC4 50800005 */ beql $a0, $zero, .L80033DDC /* F1C8 80033DC8 24040128 */ addiu $a0, $zero, 0x128 /* F1CC 80033DCC 0C05178A */ jal read_background_size -/* F1D0 80033DD0 00000000 */ nop +/* F1D0 80033DD0 00000000 */ nop /* F1D4 80033DD4 0800CF7B */ j .L80033DEC -/* F1D8 80033DD8 00000000 */ nop +/* F1D8 80033DD8 00000000 */ nop .L80033DDC: /* F1DC 80033DDC 240500C8 */ addiu $a1, $zero, 0xc8 /* F1E0 80033DE0 2406000C */ addiu $a2, $zero, 0xc @@ -154,9 +154,9 @@ glabel func_80033BC0 /* F204 80033E04 0C045709 */ jal load_model_textures /* F208 80033E08 0040282D */ daddu $a1, $v0, $zero /* F20C 80033E0C 0C04584B */ jal calculate_model_sizes -/* F210 80033E10 00000000 */ nop +/* F210 80033E10 00000000 */ nop /* F214 80033E14 0C00EC6C */ jal func_8003B1B0 -/* F218 80033E18 00000000 */ nop +/* F218 80033E18 00000000 */ nop /* F21C 80033E1C 3C02800A */ lui $v0, 0x800a /* F220 80033E20 8C420904 */ lw $v0, 0x904($v0) /* F224 80033E24 3C04800A */ lui $a0, 0x800a @@ -164,12 +164,12 @@ glabel func_80033BC0 /* F22C 80033E2C 10800003 */ beqz $a0, .L80033E3C /* F230 80033E30 AE620004 */ sw $v0, 4($s3) /* F234 80033E34 0C009C22 */ jal func_80027088 -/* F238 80033E38 00000000 */ nop +/* F238 80033E38 00000000 */ nop .L80033E3C: /* F23C 80033E3C 24040004 */ addiu $a0, $zero, 4 .L80033E40: /* F240 80033E40 0C00CD3C */ jal set_game_mode -/* F244 80033E44 00000000 */ nop +/* F244 80033E44 00000000 */ nop .L80033E48: /* F248 80033E48 8FBF0028 */ lw $ra, 0x28($sp) /* F24C 80033E4C 8FB30024 */ lw $s3, 0x24($sp) diff --git a/asm/nonmatchings/code_f270_len_1190/func_80034C3C.s b/asm/nonmatchings/code_f270_len_1190/func_80034C3C.s index dedf270b12..75b1db7e46 100644 --- a/asm/nonmatchings/code_f270_len_1190/func_80034C3C.s +++ b/asm/nonmatchings/code_f270_len_1190/func_80034C3C.s @@ -17,19 +17,19 @@ glabel func_80034C3C /* 1006C 80034C6C 28620002 */ slti $v0, $v1, 2 /* 10070 80034C70 24020004 */ addiu $v0, $zero, 4 /* 10074 80034C74 106200CA */ beq $v1, $v0, .L80034FA0 -/* 10078 80034C78 00000000 */ nop +/* 10078 80034C78 00000000 */ nop /* 1007C 80034C7C 0800D3F6 */ j .L80034FD8 -/* 10080 80034C80 00000000 */ nop +/* 10080 80034C80 00000000 */ nop .L80034C84: /* 10084 80034C84 104000D4 */ beqz $v0, .L80034FD8 -/* 10088 80034C88 00000000 */ nop +/* 10088 80034C88 00000000 */ nop /* 1008C 80034C8C 046000D2 */ bltz $v1, .L80034FD8 /* 10090 80034C90 24020004 */ addiu $v0, $zero, 4 /* 10094 80034C94 3C06800A */ lui $a2, 0x800a /* 10098 80034C98 24C60920 */ addiu $a2, $a2, 0x920 /* 1009C 80034C9C 80C30000 */ lb $v1, ($a2) /* 100A0 80034CA0 14620007 */ bne $v1, $v0, .L80034CC0 -/* 100A4 80034CA4 00000000 */ nop +/* 100A4 80034CA4 00000000 */ nop /* 100A8 80034CA8 3C03800A */ lui $v1, %hi(D_8009A650) /* 100AC 80034CAC 2463A650 */ addiu $v1, $v1, %lo(D_8009A650) /* 100B0 80034CB0 8C620000 */ lw $v0, ($v1) @@ -44,7 +44,7 @@ glabel func_80034C3C /* 100D0 80034CD0 A0C20000 */ sb $v0, ($a2) /* 100D4 80034CD4 00021600 */ sll $v0, $v0, 0x18 /* 100D8 80034CD8 144000BF */ bnez $v0, .L80034FD8 -/* 100DC 80034CDC 00000000 */ nop +/* 100DC 80034CDC 00000000 */ nop .L80034CE0: /* 100E0 80034CE0 3C048007 */ lui $a0, 0x8007 /* 100E4 80034CE4 24847950 */ addiu $a0, $a0, 0x7950 @@ -53,7 +53,7 @@ glabel func_80034C3C /* 100F0 80034CF0 0C017CBC */ jal nuGfxSetCfb /* 100F4 80034CF4 A0C20000 */ sb $v0, ($a2) /* 100F8 80034CF8 0C0911C2 */ jal pause_cleanup -/* 100FC 80034CFC 00000000 */ nop +/* 100FC 80034CFC 00000000 */ nop /* 10100 80034D00 3C04800A */ lui $a0, %hi(D_8009A650) /* 10104 80034D04 2484A650 */ addiu $a0, $a0, %lo(D_8009A650) /* 10108 80034D08 8C820000 */ lw $v0, ($a0) @@ -80,47 +80,47 @@ glabel func_80034C3C /* 1015C 80034D5C 0C016BE1 */ jal func_8005AF84 /* 10160 80034D60 A4A30148 */ sh $v1, 0x148($a1) /* 10164 80034D64 0C00AB37 */ jal func_8002ACDC -/* 10168 80034D68 00000000 */ nop +/* 10168 80034D68 00000000 */ nop /* 1016C 80034D6C 0C018030 */ jal nuContRmbForceStopEnd -/* 10170 80034D70 00000000 */ nop +/* 10170 80034D70 00000000 */ nop /* 10174 80034D74 0C05259C */ jal func_80149670 /* 10178 80034D78 24040001 */ addiu $a0, $zero, 1 /* 1017C 80034D7C 8E020000 */ lw $v0, ($s0) /* 10180 80034D80 0C0B763E */ jal func_802DD8F8 /* 10184 80034D84 80440084 */ lb $a0, 0x84($v0) /* 10188 80034D88 0C0457FA */ jal init_model_data -/* 1018C 80034D8C 00000000 */ nop +/* 1018C 80034D8C 00000000 */ nop /* 10190 80034D90 0C05203C */ jal func_801480F0 -/* 10194 80034D94 00000000 */ nop +/* 10194 80034D94 00000000 */ nop /* 10198 80034D98 0C048316 */ jal init_virtual_models -/* 1019C 80034D9C 00000000 */ nop +/* 1019C 80034D9C 00000000 */ nop /* 101A0 80034DA0 0C0478C4 */ jal func_8011E310 -/* 101A4 80034DA4 00000000 */ nop +/* 101A4 80034DA4 00000000 */ nop /* 101A8 80034DA8 0C048C45 */ jal init_dynamic_entity_list -/* 101AC 80034DAC 00000000 */ nop +/* 101AC 80034DAC 00000000 */ nop /* 101B0 80034DB0 0000202D */ daddu $a0, $zero, $zero /* 101B4 80034DB4 0C0514BA */ jal func_801452E8 /* 101B8 80034DB8 0080282D */ daddu $a1, $a0, $zero /* 101BC 80034DBC 0C0504C0 */ jal init_menu_icon_list -/* 101C0 80034DC0 00000000 */ nop +/* 101C0 80034DC0 00000000 */ nop /* 101C4 80034DC4 0C04C433 */ jal init_item_entity_list -/* 101C8 80034DC8 00000000 */ nop +/* 101C8 80034DC8 00000000 */ nop /* 101CC 80034DCC 0C0B0CBB */ jal init_script_list -/* 101D0 80034DD0 00000000 */ nop +/* 101D0 80034DD0 00000000 */ nop /* 101D4 80034DD4 0C00E14B */ jal init_npc_list -/* 101D8 80034DD8 00000000 */ nop +/* 101D8 80034DD8 00000000 */ nop /* 101DC 80034DDC 0C044396 */ jal func_80110E58 -/* 101E0 80034DE0 00000000 */ nop +/* 101E0 80034DE0 00000000 */ nop /* 101E4 80034DE4 0C0515CA */ jal init_trigger_list -/* 101E8 80034DE8 00000000 */ nop +/* 101E8 80034DE8 00000000 */ nop /* 101EC 80034DEC 3C04800A */ lui $a0, 0x800a /* 101F0 80034DF0 8C840924 */ lw $a0, 0x924($a0) /* 101F4 80034DF4 0C0525FF */ jal func_801497FC -/* 101F8 80034DF8 00000000 */ nop +/* 101F8 80034DF8 00000000 */ nop /* 101FC 80034DFC 0C052B1C */ jal func_8014AC70 -/* 10200 80034E00 00000000 */ nop -/* 10204 80034E04 0C0169B0 */ jal load_map_script_lib -/* 10208 80034E08 00000000 */ nop +/* 10200 80034E00 00000000 */ nop +/* 10204 80034E04 0C0169B0 */ jal load_world_script_api +/* 10208 80034E08 00000000 */ nop /* 1020C 80034E0C 3C04800E */ lui $a0, 0x800e /* 10210 80034E10 24849230 */ addiu $a0, $a0, -0x6dd0 /* 10214 80034E14 0C016B3A */ jal load_asset_by_name @@ -133,12 +133,12 @@ glabel func_80034C3C /* 10230 80034E30 0C00AB1E */ jal general_heap_free /* 10234 80034E34 0200202D */ daddu $a0, $s0, $zero /* 10238 80034E38 0C016BE5 */ jal initialize_collision -/* 1023C 80034E3C 00000000 */ nop +/* 1023C 80034E3C 00000000 */ nop /* 10240 80034E40 0C016C16 */ jal load_collision -/* 10244 80034E44 00000000 */ nop +/* 10244 80034E44 00000000 */ nop /* 10248 80034E48 8E240008 */ lw $a0, 8($s1) /* 1024C 80034E4C 10800004 */ beqz $a0, .L80034E60 -/* 10250 80034E50 00000000 */ nop +/* 10250 80034E50 00000000 */ nop /* 10254 80034E54 8E25000C */ lw $a1, 0xc($s1) /* 10258 80034E58 0C00A5CF */ jal dma_copy /* 1025C 80034E5C 8E260010 */ lw $a2, 0x10($s1) @@ -149,9 +149,9 @@ glabel func_80034C3C /* 1026C 80034E6C 50800005 */ beql $a0, $zero, .L80034E84 /* 10270 80034E70 24040128 */ addiu $a0, $zero, 0x128 /* 10274 80034E74 0C05178A */ jal read_background_size -/* 10278 80034E78 00000000 */ nop +/* 10278 80034E78 00000000 */ nop /* 1027C 80034E7C 0800D3A5 */ j .L80034E94 -/* 10280 80034E80 00000000 */ nop +/* 10280 80034E80 00000000 */ nop .L80034E84: /* 10284 80034E84 240500C8 */ addiu $a1, $zero, 0xc8 /* 10288 80034E88 2406000C */ addiu $a2, $zero, 0xc @@ -164,11 +164,11 @@ glabel func_80034C3C /* 102A0 80034EA0 0C04584B */ jal calculate_model_sizes /* 102A4 80034EA4 A462015C */ sh $v0, 0x15c($v1) /* 102A8 80034EA8 0C00EC6C */ jal func_8003B1B0 -/* 102AC 80034EAC 00000000 */ nop +/* 102AC 80034EAC 00000000 */ nop /* 102B0 80034EB0 0C051FB1 */ jal func_80147EC4 /* 102B4 80034EB4 0000202D */ daddu $a0, $zero, $zero /* 102B8 80034EB8 0C03A631 */ jal func_800E98C4 -/* 102BC 80034EBC 00000000 */ nop +/* 102BC 80034EBC 00000000 */ nop /* 102C0 80034EC0 0C009C22 */ jal func_80027088 /* 102C4 80034EC4 24040001 */ addiu $a0, $zero, 1 /* 102C8 80034EC8 24020003 */ addiu $v0, $zero, 3 @@ -185,13 +185,13 @@ glabel func_80034C3C /* 102F4 80034EF4 3C01802E */ lui $at, 0x802e /* 102F8 80034EF8 A0239D71 */ sb $v1, -0x628f($at) /* 102FC 80034EFC 0C00F949 */ jal func_8003E524 -/* 10300 80034F00 00000000 */ nop +/* 10300 80034F00 00000000 */ nop /* 10304 80034F04 0C00E64C */ jal update_npcs -/* 10308 80034F08 00000000 */ nop +/* 10308 80034F08 00000000 */ nop /* 1030C 80034F0C 0C037DD0 */ jal update_player -/* 10310 80034F10 00000000 */ nop +/* 10310 80034F10 00000000 */ nop /* 10314 80034F14 0C016754 */ jal func_80059D50 -/* 10318 80034F18 00000000 */ nop +/* 10318 80034F18 00000000 */ nop /* 1031C 80034F1C 3C03800A */ lui $v1, 0x800a /* 10320 80034F20 24630922 */ addiu $v1, $v1, 0x922 /* 10324 80034F24 94620000 */ lhu $v0, ($v1) @@ -201,16 +201,16 @@ glabel func_80034C3C /* 10334 80034F34 04420028 */ bltzl $v0, .L80034FD8 /* 10338 80034F38 A4600000 */ sh $zero, ($v1) /* 1033C 80034F3C 0800D3F6 */ j .L80034FD8 -/* 10340 80034F40 00000000 */ nop +/* 10340 80034F40 00000000 */ nop .L80034F44: /* 10344 80034F44 0C00F949 */ jal func_8003E524 -/* 10348 80034F48 00000000 */ nop +/* 10348 80034F48 00000000 */ nop /* 1034C 80034F4C 0C00E64C */ jal update_npcs -/* 10350 80034F50 00000000 */ nop +/* 10350 80034F50 00000000 */ nop /* 10354 80034F54 0C037DD0 */ jal update_player -/* 10358 80034F58 00000000 */ nop +/* 10358 80034F58 00000000 */ nop /* 1035C 80034F5C 0C016754 */ jal func_80059D50 -/* 10360 80034F60 00000000 */ nop +/* 10360 80034F60 00000000 */ nop /* 10364 80034F64 3C04800A */ lui $a0, 0x800a /* 10368 80034F68 24840922 */ addiu $a0, $a0, 0x922 /* 1036C 80034F6C 84820000 */ lh $v0, ($a0) @@ -226,20 +226,20 @@ glabel func_80034C3C /* 10390 80034F90 04420011 */ bltzl $v0, .L80034FD8 /* 10394 80034F94 A4800000 */ sh $zero, ($a0) /* 10398 80034F98 0800D3F6 */ j .L80034FD8 -/* 1039C 80034F9C 00000000 */ nop +/* 1039C 80034F9C 00000000 */ nop .L80034FA0: /* 103A0 80034FA0 0C009C22 */ jal func_80027088 /* 103A4 80034FA4 0000202D */ daddu $a0, $zero, $zero /* 103A8 80034FA8 0C00F949 */ jal func_8003E524 -/* 103AC 80034FAC 00000000 */ nop +/* 103AC 80034FAC 00000000 */ nop /* 103B0 80034FB0 0C00E64C */ jal update_npcs -/* 103B4 80034FB4 00000000 */ nop +/* 103B4 80034FB4 00000000 */ nop /* 103B8 80034FB8 0C037DD0 */ jal update_player -/* 103BC 80034FBC 00000000 */ nop +/* 103BC 80034FBC 00000000 */ nop /* 103C0 80034FC0 0C016754 */ jal func_80059D50 -/* 103C4 80034FC4 00000000 */ nop +/* 103C4 80034FC4 00000000 */ nop /* 103C8 80034FC8 0C038069 */ jal enable_player_input -/* 103CC 80034FCC 00000000 */ nop +/* 103CC 80034FCC 00000000 */ nop /* 103D0 80034FD0 0C00CD3C */ jal set_game_mode /* 103D4 80034FD4 24040004 */ addiu $a0, $zero, 4 .L80034FD8: diff --git a/include/functions.h b/include/functions.h index 2e2fcd7851..28c40261f8 100644 --- a/include/functions.h +++ b/include/functions.h @@ -9,6 +9,7 @@ void osCleanupThread(void); s32 heap_malloc(s32 size); HeapNode* _heap_create(void* addr, s32 size); +void dma_copy(void* romStart, void* romEnd, void* vramDest); s32 get_global_byte(s32 index); s32 get_global_flag(s32 index); diff --git a/include/variables.h b/include/variables.h index d892d99244..3d8e7e7347 100644 --- a/include/variables.h +++ b/include/variables.h @@ -154,10 +154,6 @@ extern s32 D_8009A5D8; extern u8 D_800779B0; extern u8 D_800A0963; -extern s32 mapScriptLibStart; -extern s32 mapScriptLibEnd; -extern s32 mapScriptLibVram; - // Scripts extern Bytecode* SCRIPT_NpcDefeat; extern Bytecode* ShakeCam1; diff --git a/src/code_341d0_len_20d0.c b/src/code_341d0_len_20d0.c index 2cf1492877..fffc1b3c18 100644 --- a/src/code_341d0_len_20d0.c +++ b/src/code_341d0_len_20d0.c @@ -1,4 +1,5 @@ #include "common.h" +#include "ld_addrs.h" INCLUDE_ASM(s32, "code_341d0_len_20d0", func_80058DD0); @@ -42,8 +43,8 @@ INCLUDE_ASM(s32, "code_341d0_len_20d0", remove_all_effects); INCLUDE_ASM(s32, "code_341d0_len_20d0", play_effect); -void load_map_script_lib(void) { - dma_copy(&mapScriptLibStart, &mapScriptLibEnd, &mapScriptLibVram); +void load_world_script_api(void) { + dma_copy(&world_script_api_ROM_START, &world_script_api_ROM_END, &world_script_api_VRAM); } INCLUDE_ASM(s32, "code_341d0_len_20d0", load_map_by_IDs); diff --git a/src/code_7e0e80.c b/src/world/script_api/7E0E80.c similarity index 100% rename from src/code_7e0e80.c rename to src/world/script_api/7E0E80.c diff --git a/src/code_7E2AA0.c b/src/world/script_api/7E2AA0.c similarity index 100% rename from src/code_7E2AA0.c rename to src/world/script_api/7E2AA0.c diff --git a/src/code_7E3700.c b/src/world/script_api/7E3700.c similarity index 100% rename from src/code_7E3700.c rename to src/world/script_api/7E3700.c diff --git a/tools/n64splat b/tools/n64splat index 037d80e00c..fdb44704e6 160000 --- a/tools/n64splat +++ b/tools/n64splat @@ -1 +1 @@ -Subproject commit 037d80e00cb3aeae37bdad77bfac871036982456 +Subproject commit fdb44704e6da70d5d2bab3bfc2e307745600fe0d diff --git a/tools/splat.yaml b/tools/splat.yaml index 68395935ff..4650d48de1 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -820,11 +820,13 @@ segments: files: - [0x415D90, "c"] - [0x4200C0, "bin"] # todo split this further - - type: code + - name: world/script_api/ + ld_name: world_script_api + type: code start: 0x7E0E80 vram: 0x80280000 files: - - [0x7e0e80, "c", "code_7e0e80"] + - [0x7e0e80, "c"] - [0x7E2AA0, "c"] - [0x7E3700, "c"] - [0x7e4d00, "bin"] diff --git a/undefined_syms.txt b/undefined_syms.txt index cf1496998c..b5fe5e04f0 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -68,10 +68,6 @@ gBattleState = 0x800DC068; gBattleStatus = 0x800DC070; gPauseMenuStrings = 0x8026F778; -mapScriptLibStart = 0x7E0E80; -mapScriptLibEnd = 0x7E73A0; -mapScriptLibVram = 0x80280000; - D_000759B0 = 0x000759B0; D_000759B0_end = 0x000A5DD0; D_000A5DD0 = 0x000A5DD0; From 3d9127a340d00ea0feac87a39d3d752203209a94 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 17:43:12 +0000 Subject: [PATCH 02/16] match world table .data --- include/map.h | 14 +- src/code_341d0_len_20d0.c | 590 +++++++++++++++++++++++++++++ src/code_e0b30_len_b80.c | 4 +- src/world/area_kmr/kmr_12/kmr_12.h | 2 + tools/n64splat | 2 +- tools/splat.yaml | 5 +- tools/symbol_addrs.txt | 1 - undefined_syms.txt | 1 - 8 files changed, 607 insertions(+), 12 deletions(-) diff --git a/include/map.h b/include/map.h index f40c65c2b9..7336be6331 100644 --- a/include/map.h +++ b/include/map.h @@ -33,6 +33,8 @@ typedef struct MapConfig { } tattle; } MapConfig; // size = 0x40 +typedef s32 MapInitialiser(void); + #define MAP_ID_MAX_LEN 7 ///< "xxx_yyy" excluding null terminator. typedef struct Map { /* 0x00 */ char* id; ///< @see MAP_ID_MAX_LEN @@ -41,10 +43,10 @@ typedef struct Map { /* 0x0C */ void* dmaEnd; /* 0x10 */ void* dmaDest; /* 0x14 */ char* bgName; - /* 0x18 */ s32 (*init)(void); ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading. - /* 0x1C */ s16 flags1; - /* 0x1E */ s8 flags2; - /* 0x1F */ s8 flags3; + /* 0x18 */ MapInitialiser* init; ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading. + /* 0x1C */ s16 unk_1C; // Unused? + /* 0x1E */ s8 songVariation; ///< 0 or 1. @see get_song_variation_override_for_cur_map + /* 0x1F */ s8 flags; } Map; // size = 0x20 typedef struct Area { @@ -246,9 +248,9 @@ typedef struct { Enemy* get_enemy(NpcId npcId); /// Zero-terminated. -extern Area gAreas[]; +Area gAreas[29]; -/// Lists the songs that are forced to use the variation determined by `map.flags2 & 1`. +/// Lists the songs that are forced to use the variation determined by `map.songVariation & 1`. /// @see get_song_variation_override_for_cur_map extern SongID gSongsUsingVariationFlag[6]; diff --git a/src/code_341d0_len_20d0.c b/src/code_341d0_len_20d0.c index fffc1b3c18..d012373330 100644 --- a/src/code_341d0_len_20d0.c +++ b/src/code_341d0_len_20d0.c @@ -1,5 +1,9 @@ #include "common.h" #include "ld_addrs.h" +#include "map.h" + +#include "world/area_kmr/kmr_12/kmr_12.h" +#undef MAP_NAME INCLUDE_ASM(s32, "code_341d0_len_20d0", func_80058DD0); @@ -47,6 +51,9 @@ void load_world_script_api(void) { dma_copy(&world_script_api_ROM_START, &world_script_api_ROM_END, &world_script_api_VRAM); } +//const char* shape_sprintf = "%s_shape"; +//const char* hit_sprintf = "%s_hit"; +//const char* tex_sprintf = "%s_tex"; INCLUDE_ASM(s32, "code_341d0_len_20d0", load_map_by_IDs); INCLUDE_ASM(s32, "code_341d0_len_20d0", get_current_map_config); @@ -58,3 +65,586 @@ INCLUDE_ASM(s32, "code_341d0_len_20d0", get_map_IDs_by_name); INCLUDE_ASM(void*, "code_341d0_len_20d0", load_asset_by_name, char* name, s32* decompressedSize); INCLUDE_ASM(s32, "code_341d0_len_20d0", get_asset_offset); + +#define AREA(area, jp_name) { ARRAY_COUNT(area##_maps), &area##_maps, "area_" #area, jp_name } + +#define MAP(map) \ + .id = #map, \ + .config = &map##_config, \ + .dmaStart = (void*)LD_code_##map##_ROM_START, \ + .dmaEnd = (void*)LD_code_##map##_ROM_END, \ + .dmaDest = (void*)LD_code_##map##_VRAM \ + +// Should be removed once the data section containing .init and .config of all maps have been disassembled +#define MAP_UNSPLIT(map, configVRAM) \ + .id = #map, \ + .config = (MapConfig*)(configVRAM), \ + .dmaStart = (void*)LD_code_##map##_ROM_START, \ + .dmaEnd = (void*)LD_code_##map##_ROM_END, \ + .dmaDest = (void*)LD_code_##map##_VRAM \ + +/// Toad Town +static Map mac_maps[] = { + { MAP_UNSPLIT(machi, 0x802407A0), .bgName = "nok_bg" }, + { MAP_UNSPLIT(mac_00, 0x80243BE0), .bgName = "nok_bg" }, + { MAP_UNSPLIT(mac_01, 0x80246730), .bgName = "nok_bg" }, + { MAP_UNSPLIT(mac_02, 0x80243580), .bgName = "nok_bg" }, + { MAP_UNSPLIT(mac_03, 0x802428B0), .bgName = "nok_bg" }, + { MAP_UNSPLIT(mac_04, 0x80242080), .bgName = "nok_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(mac_05, 0x802441A0), .bgName = "nok_bg" }, + { MAP_UNSPLIT(mac_06, 0x802416A0), .bgName = "nok_bg" }, +}; + +/// Toad Town Tunnels +static Map tik_maps[] = { + { MAP_UNSPLIT(tik_01, 0x80240AE0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_02, 0x802409B0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_03, 0x80240B00), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_04, 0x80240CB0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_05, 0x80240A90), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_06, 0x802409A0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_07, 0x80242920), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_08, 0x80240B10), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_09, 0x802412D0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_10, 0x802413D0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_12, 0x80242260), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_14, 0x80240980), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_15, 0x80240B30), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_17, 0x80241380), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_18, 0x802406D0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_19, 0x80241340), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_20, 0x80241170), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_21, 0x80240990), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_22, 0x802409D0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_23, 0x80241160), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(tik_24, 0x80240ED0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(tik_25, 0x802407D0), .songVariation = 1, .flags = 2 }, +}; + +/// Inside the Whale +static Map kgr_maps[] = { + { MAP_UNSPLIT(kgr_01, 0x80240540), .flags = 1 }, + { MAP_UNSPLIT(kgr_02, 0x80240790), .flags = 1 }, +}; + +/// Goomba Region +static Map kmr_maps[] = { + { MAP_UNSPLIT(kmr_00, 0x80240D80), .bgName = "kmr_bg", .flags = 1 }, + { MAP_UNSPLIT(kmr_02, 0x80243AF0), .bgName = "kmr_bg" }, + { MAP_UNSPLIT(kmr_03, 0x80240680), .bgName = "kmr_bg" }, + { MAP_UNSPLIT(kmr_04, 0x80240520), .bgName = "kmr_bg" }, + { MAP_UNSPLIT(kmr_05, 0x802417A0), .bgName = "kmr_bg" }, + { MAP_UNSPLIT(kmr_06, 0x80241DC0), .bgName = "kmr_bg" }, + { MAP_UNSPLIT(kmr_07, 0x80240B70), .bgName = "kmr_bg" }, + { MAP_UNSPLIT(kmr_09, 0x80241550), .bgName = "kmr_bg" }, + { MAP_UNSPLIT(kmr_10, 0x80240640), .bgName = "kmr_bg" }, + { MAP_UNSPLIT(kmr_11, 0x80241180), .bgName = "kmr_bg" }, + { MAP(kmr_12), .bgName = "kmr_bg" }, + { MAP_UNSPLIT(kmr_20, 0x80242C00), .bgName = "kmr_bg" }, // Mario's House + { MAP_UNSPLIT(kmr_21, 0x802402F0), .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kmr_22, 0x80240DA0), .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kmr_23, 0x80241150), .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kmr_24, 0x80240120), .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kmr_30, 0x802404F0) }, +}; + +/// Mt. Rugged +static Map iwa_maps[] = { + { MAP_UNSPLIT(iwa_00, 0x80240310), .bgName = "iwa_bg" }, + { MAP_UNSPLIT(iwa_01, 0x80243320), .bgName = "iwa_bg" }, + { MAP_UNSPLIT(iwa_02, 0x80241140), .bgName = "iwa_bg" }, + { MAP_UNSPLIT(iwa_03, 0x80241360), .bgName = "iwa_bg" }, + { MAP_UNSPLIT(iwa_04, 0x80241100), .bgName = "iwa_bg" }, + { MAP_UNSPLIT(iwa_10, 0x80241810), .bgName = "iwa_bg" }, + { MAP_UNSPLIT(iwa_11, 0x80240330), .bgName = "iwa_bg" }, +}; + +/// Dry Dry Outpost +static Map dro_maps[] = { + { MAP_UNSPLIT(dro_01, 0x80243B70), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(dro_02, 0x80243AB0), .bgName = "sbk_bg" }, +}; + +/// Dry Dry Desert +static Map sbk_maps[] = { + { MAP_UNSPLIT(sbk_00, 0x802400A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_01, 0x802400A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_02, 0x80240C80), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_03, 0x802400A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_04, 0x802400A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_05, 0x802400B0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_06, 0x802403C0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_10, 0x80240080), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_11, 0x802401A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_12, 0x802400A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_13, 0x802401A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_14, 0x80240090), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_15, 0x802400A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_16, 0x802402C0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_20, 0x80240180), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_21, 0x80240080), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_22, 0x802401A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_23, 0x80240080), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_24, 0x802403D0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_25, 0x802403C0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_26, 0x802403E0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_30, 0x80241870), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_31, 0x80240180), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_32, 0x802401B0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_33, 0x80240080), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_34, 0x80240A20), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_35, 0x802403C0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_36, 0x802402C0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_40, 0x80240180), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_41, 0x80240080), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_42, 0x80240180), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_43, 0x80240080), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_44, 0x802401A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_45, 0x80240090), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_46, 0x802403E0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_50, 0x80240080), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_51, 0x802401A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_52, 0x80240080), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_53, 0x802400A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_54, 0x80240080), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_55, 0x802402E0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_56, 0x80241040), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_60, 0x802400A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_61, 0x80240080), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_62, 0x802400A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_63, 0x802400A0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_64, 0x80240080), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_65, 0x80240080), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_66, 0x802403C0), .bgName = "sbk_bg" }, + { MAP_UNSPLIT(sbk_99, 0x80240020), .bgName = "sbk_bg" }, +}; + +/// Dry Dry Ruins +static Map isk_maps[] = { + { MAP_UNSPLIT(isk_01, 0x80240020), .bgName = "sbk3_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_02, 0x80240140), .bgName = "sbk3_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_03, 0x80240030), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_04, 0x80240AD0), .bgName = "sbk3_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_05, 0x80241ED0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_06, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_07, 0x80240130), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_08, 0x80240930), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_09, 0x80240340), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_10, 0x80240DE0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_11, 0x802401A0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_12, 0x80240040), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_13, 0x80242080), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_14, 0x80241D70), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_16, 0x80240B20), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_18, 0x80240910), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(isk_19, 0x80240020), .songVariation = 1, .flags = 2 }, +}; + +/// Koopa Bros. Fortress +static Map trd_maps[] = { + { MAP_UNSPLIT(trd_00, 0x80240690), .bgName = "nok_bg" }, + { MAP_UNSPLIT(trd_01, 0x80241700), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(trd_02, 0x80241AA0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(trd_03, 0x80240A40), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(trd_04, 0x80243900), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(trd_05, 0x802407B0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(trd_06, 0x80240D60), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(trd_07, 0x80242910), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(trd_08, 0x80240A30), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(trd_09, 0x80240200), .bgName = "nok_bg" }, + { MAP_UNSPLIT(trd_10, 0x80240870), .songVariation = 1, .flags = 3 }, +}; + +/// Koopa Region +static Map nok_maps[] = { + { MAP_UNSPLIT(nok_01, 0x80242B90), .bgName = "nok_bg" }, + { MAP_UNSPLIT(nok_02, 0x802445F0), .bgName = "nok_bg" }, + { MAP_UNSPLIT(nok_03, 0x80240E40), .bgName = "nok_bg" }, + { MAP_UNSPLIT(nok_04, 0x80240F40), .bgName = "nok_bg" }, + { MAP_UNSPLIT(nok_11, 0x80241F70), .bgName = "nok_bg" }, + { MAP_UNSPLIT(nok_12, 0x80242100), .bgName = "nok_bg" }, + { MAP_UNSPLIT(nok_13, 0x802414C0), .bgName = "nok_bg" }, + { MAP_UNSPLIT(nok_14, 0x80242440), .bgName = "nok_bg" }, + { MAP_UNSPLIT(nok_15, 0x802427D0), .bgName = "nok_bg" }, +}; + +/// Star Region +static Map hos_maps[] = { + { MAP_UNSPLIT(hos_00, 0x80240D50), .bgName = "nok_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(hos_01, 0x80240E40), .bgName = "hos_bg" }, + { MAP_UNSPLIT(hos_02, 0x80242B90), .bgName = "hos_bg" }, + { MAP_UNSPLIT(hos_03, 0x802435F0), .bgName = "hos_bg" }, + { MAP_UNSPLIT(hos_04, 0x80240EE0), .bgName = "hos_bg" }, + { MAP_UNSPLIT(hos_05, 0x80245910), .bgName = "hos_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(hos_06, 0x80242570), .bgName = "hos_bg" }, + { MAP_UNSPLIT(hos_10, 0x80240CE0), .bgName = "hos_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(hos_20, 0x80240390), .bgName = "hos_bg" }, +}; + +/// Bowser's Castle +static Map kpa_maps[] = { + { MAP_UNSPLIT(kpa_01, 0x80240A70), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_03, 0x80241EE0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_04, 0x80240190), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_08, 0x802414C0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_09, 0x80241310), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_10, 0x80240360), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_11, 0x80240B40), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_12, 0x802404A0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_13, 0x802404A0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_14, 0x802408A0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_15, 0x802405E0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_16, 0x802403B0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_17, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_32, 0x80240350), .bgName = "kpa_bg", .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_33, 0x80240350), .bgName = "kpa_bg", .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_40, 0x80240040), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_41, 0x80240040), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_50, 0x80241A40), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_51, 0x80241C40), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_52, 0x80241360), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_53, 0x80240190), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_60, 0x80240450), .bgName = "kpa_bg" }, + { MAP_UNSPLIT(kpa_61, 0x80242360), .bgName = "kpa_bg" }, + { MAP_UNSPLIT(kpa_62, 0x80240430), .bgName = "kpa_bg" }, + { MAP_UNSPLIT(kpa_63, 0x802401B0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_70, 0x80240B10), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_81, 0x80240480), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_82, 0x80240460), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_83, 0x80240090), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_90, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_91, 0x80241920), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_94, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_95, 0x80241920), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_96, 0x80240040), .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(kpa_100, 0x80240060), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_101, 0x80240060), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_102, 0x802435B0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_111, 0x802413E0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_112, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_113, 0x80240AD0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_114, 0x80240070), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_115, 0x802413F0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_116, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_117, 0x80240010), .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(kpa_118, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_119, 0x80240010), .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(kpa_121, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_130, 0x80240760), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_133, 0x802404B0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_134, 0x80240740), .songVariation = 1, .flags = 3 }, +}; + +/// Peach's Castle Grounds +static Map osr_maps[] = { + { MAP_UNSPLIT(osr_00, 0x802407E0), .bgName = "nok_bg" }, + { MAP_UNSPLIT(osr_01, 0x80240B00), .bgName = "nok_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(osr_02, 0x80240170), .bgName = "kpa_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(osr_03, 0x802403F0), .bgName = "kpa_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(osr_04, 0x802400D0), .bgName = "nok_bg", .init = (MapInitialiser*)0x80240000 }, +}; + +/// Peach's Castle +/// @bug There are two entries for kkj_26; the latter is unreachable. +static Map kkj_maps[] = { + { MAP_UNSPLIT(kkj_00, 0x80241030), .bgName = "nok_bg", .songVariation = 1, .flags = 3, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kkj_01, 0x80240F10), .bgName = "nok_bg", .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kkj_02, 0x80240030), .bgName = "nok_bg", .flags = 2 }, + { MAP_UNSPLIT(kkj_03, 0x80240360), .bgName = "nok_bg", .flags = 3, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kkj_10, 0x80241120), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kkj_11, 0x80241160), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kkj_12, 0x802408D0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kkj_13, 0x802407A0), .bgName = "kpa_bg", .songVariation = 1, .flags = 3, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kkj_14, 0x80240580), .bgName = "kpa_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kkj_15, 0x80240640) }, + { MAP_UNSPLIT(kkj_16, 0x80241090), .flags = 0x1 }, + { MAP_UNSPLIT(kkj_17, 0x802405B0) }, + { MAP_UNSPLIT(kkj_18, 0x80240830), .bgName = "kpa_bg" }, + { MAP_UNSPLIT(kkj_19, 0x80240D20) }, + { MAP_UNSPLIT(kkj_20, 0x80240600) }, + { MAP_UNSPLIT(kkj_21, 0x80240010), .flags = 0x1 }, + { MAP_UNSPLIT(kkj_22, 0x80240020), .bgName = "kpa_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kkj_23, 0x802409F0), .bgName = "kpa_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kkj_24, 0x80240040), .bgName = "kpa_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kkj_25, 0x80240F50), .bgName = "kpa_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kkj_26, 0x80240070), .bgName = "kpa_bg" }, + { MAP_UNSPLIT(kkj_26, 0x80240070), .flags = 0x2 }, + { MAP_UNSPLIT(kkj_27, 0x802404C0), .flags = 0x1 }, + { MAP_UNSPLIT(kkj_28, 0x80240010), .flags = 0x1 }, + { MAP_UNSPLIT(kkj_29, 0x80240080), .flags = 0x1 }, +}; + +/// Jade Jungle +static Map jan_maps[] = { + { MAP_UNSPLIT(jan_00, 0x80241BD0), .bgName = "yos_bg" }, + { MAP_UNSPLIT(jan_01, 0x802413F0), .bgName = "yos_bg" }, + { MAP_UNSPLIT(jan_02, 0x80242940), .bgName = "yos_bg" }, + { MAP_UNSPLIT(jan_03, 0x802432D0), .bgName = "yos_bg" }, + { MAP_UNSPLIT(jan_04, 0x80241140), .bgName = "yos_bg" }, + { MAP_UNSPLIT(jan_05, 0x80242710), .bgName = "yos_bg" }, + { MAP_UNSPLIT(jan_06, 0x80242620), .bgName = "jan_bg" }, + { MAP_UNSPLIT(jan_07, 0x80241230), .bgName = "yos_bg" }, + { MAP_UNSPLIT(jan_08, 0x80242460), .bgName = "yos_bg" }, + { MAP_UNSPLIT(jan_09, 0x80241960), .bgName = "yos_bg" }, + { MAP_UNSPLIT(jan_10, 0x80241750), .bgName = "yos_bg" }, + { MAP_UNSPLIT(jan_11, 0x80240810), .bgName = "jan_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(jan_12, 0x80241280), .bgName = "jan_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(jan_13, 0x802405F0), .bgName = "jan_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(jan_14, 0x80241300), .bgName = "jan_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(jan_15, 0x80240320), .bgName = "jan_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(jan_16, 0x80240590), .bgName = "jan_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(jan_17, 0x80240040), .bgName = "jan_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(jan_18, 0x80240020), .bgName = "yos_bg" }, + { MAP_UNSPLIT(jan_19, 0x80240040), .bgName = "jan_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(jan_22, 0x802419A0), .bgName = "jan_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(jan_23, 0x80240010), .bgName = "yos_bg" }, +}; + +/// Forever Forest +static Map mim_maps[] = { + { MAP_UNSPLIT(mim_01, 0x80241EF0), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(mim_02, 0x80241220), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(mim_03, 0x80240570), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(mim_04, 0x80241170), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(mim_05, 0x80241A60), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(mim_06, 0x80242D70), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(mim_07, 0x802410D0), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(mim_08, 0x80242F80), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(mim_09, 0x80240F00), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(mim_10, 0x802401B0), .bgName = "nok_bg" }, + { MAP_UNSPLIT(mim_11, 0x80240C20), .bgName = "obk_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(mim_12, 0x80240600), .bgName = "arn_bg", .songVariation = 1, .flags = 2 }, +}; + +/// Boo's Mansion +static Map obk_maps[] = { + { MAP_UNSPLIT(obk_01, 0x802411B0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(obk_02, 0x802402E0), .bgName = "obk_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(obk_03, 0x80241020), .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(obk_04, 0x80240E90), .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(obk_05, 0x802409F0), .bgName = "obk_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(obk_06, 0x80240020), .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(obk_07, 0x80241BA0), .bgName = "obk_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(obk_08, 0x802417B0), .bgName = "obk_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(obk_09, 0x80240460), .songVariation = 1, .flags = 2 }, +}; + +/// Gusty Gulch +static Map arn_maps[] = { + { MAP_UNSPLIT(arn_02, 0x80241000), .bgName = "arn_bg" }, + { MAP_UNSPLIT(arn_03, 0x80241740), .bgName = "arn_bg" }, + { MAP_UNSPLIT(arn_04, 0x80243390), .bgName = "arn_bg" }, + { MAP_UNSPLIT(arn_05, 0x80241320), .bgName = "arn_bg" }, + { MAP_UNSPLIT(arn_07, 0x80241ED0), .bgName = "arn_bg" }, + { MAP_UNSPLIT(arn_08, 0x802402C0), .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(arn_09, 0x80240060), .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(arn_10, 0x80240020), .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(arn_11, 0x80240010), .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(arn_12, 0x80240020), .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(arn_13, 0x80240020), .songVariation = 1, .flags = 1 }, +}; + +/// Tubba Blubba's Castle +static Map dgb_maps[] = { + { MAP_UNSPLIT(dgb_00, 0x802400D0), .bgName = "arn_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(dgb_01, 0x80243460), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_02, 0x80241470), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_03, 0x80242830), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_04, 0x80243130), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_05, 0x802414A0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_06, 0x802402E0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_07, 0x80241450), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_08, 0x80243CB0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_09, 0x80243840), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_10, 0x80240210), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_11, 0x80240090), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_12, 0x802402D0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_13, 0x80240010), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_14, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_15, 0x802418A0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_16, 0x80241440), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_17, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(dgb_18, 0x80241280), .songVariation = 1, .flags = 2 }, +}; + +/// Mt. Lavalava +static Map kzn_maps[] = { + { MAP_UNSPLIT(kzn_01, 0x80240330), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_02, 0x80242850), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_03, 0x802430E0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_04, 0x80241770), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_05, 0x80240330), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_06, 0x80240AA0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_07, 0x80242320), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_08, 0x80244130), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_09, 0x80243A40), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_10, 0x802406F0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_11, 0x80242680), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_17, 0x802430C0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_18, 0x802403F0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_19, 0x80241D70), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_20, 0x80240AE0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_22, 0x802403A0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kzn_23, 0x80240630), .bgName = "yos_bg", .songVariation = 1, .flags = 2 }, +}; + +/// Flower Fields +static Map flo_maps[] = { + { MAP_UNSPLIT(flo_00, 0x80241490), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_03, 0x80240660), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_07, 0x80240760), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_08, 0x80241F00), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_09, 0x80241840), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_10, 0x802414A0), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_11, 0x802403A0), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_12, 0x80240710), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_13, 0x80243690), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_14, 0x802423B0), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_15, 0x80240020), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_16, 0x80242990), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_17, 0x80243240), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_18, 0x802407F0), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_19, 0x80240980), .bgName = "sra_bg" }, + { MAP_UNSPLIT(flo_21, 0x80240D00), .bgName = "sra_bg" }, + { MAP_UNSPLIT(flo_22, 0x802402A0), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_23, 0x80240CF0), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_24, 0x802405C0), .bgName = "fla_bg" }, + { MAP_UNSPLIT(flo_25, 0x802422F0), .bgName = "fla_bg" }, +}; + +/// Shiver Region +static Map sam_maps[] = { + { MAP_UNSPLIT(sam_01, 0x80241F70), .bgName = "yki_bg" }, + { MAP_UNSPLIT(sam_02, 0x80241C00), .bgName = "yki_bg" }, + { MAP_UNSPLIT(sam_03, 0x80240940), .bgName = "yki_bg" }, + { MAP_UNSPLIT(sam_04, 0x80240740), .bgName = "yki_bg" }, + { MAP_UNSPLIT(sam_05, 0x80241D60), .bgName = "sam_bg" }, + { MAP_UNSPLIT(sam_06, 0x80242630), .bgName = "sam_bg" }, + { MAP_UNSPLIT(sam_07, 0x80242020), .bgName = "yki_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(sam_08, 0x802417D0), .bgName = "yki_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(sam_09, 0x80240420), .bgName = "yki_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(sam_10, 0x80240CE0), .bgName = "yki_bg", .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(sam_11, 0x802421A0), .bgName = "yki_bg" }, + { MAP_UNSPLIT(sam_12, 0x802403B0), .bgName = "yki_bg", .songVariation = 1, .flags = 1 }, +}; + +/// Crystal Palace +static Map pra_maps[] = { + { MAP_UNSPLIT(pra_01, 0x80241400), .bgName = "yki_bg", .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_02, 0x802416C0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_03, 0x802401E0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_04, 0x80240970), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_05, 0x802411F0), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_06, 0x80240F60), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_09, 0x80241670), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_10, 0x802416D0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_11, 0x802411F0), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_12, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_13, 0x80241620), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_14, 0x80241200), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_15, 0x80240050), .bgName = "yki_bg", .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_16, 0x80240F60), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_18, 0x80240F50), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_19, 0x802419D0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_20, 0x80240F70), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_21, 0x80240140), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_22, 0x802402F0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_27, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_28, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_29, 0x802412C0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_31, 0x802410E0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_32, 0x80240850), .bgName = "sam_bg", .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_33, 0x802410C0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_34, 0x80241040), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_35, 0x80242C40), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_36, 0x80240F70), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_37, 0x80241840), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_38, 0x80241700), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_39, 0x80241700), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_40, 0x80240F40), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, +}; + +/// Shy Guy's Toy Box +static Map omo_maps[] = { + { MAP_UNSPLIT(omo_01, 0x80240C40), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_02, 0x80242BD0), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_03, 0x80240900), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_04, 0x80241F30), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_05, 0x80242440), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_06, 0x80240B80), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_07, 0x80243310), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_08, 0x80240E10), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_09, 0x80243700), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_10, 0x802408B0), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_11, 0x802414F0), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_12, 0x802404D0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_13, 0x80241510), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_14, 0x802405E0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_15, 0x80240810), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_16, 0x80240620), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(omo_17, 0x80243770), .bgName = "omo_bg", .songVariation = 1, .flags = 2 }, +}; + +/// Debug +static Map tst_maps[] = { + { MAP_UNSPLIT(tst_01, 0x802400B0), .bgName = "nok_bg" }, + { MAP_UNSPLIT(tst_02, 0x802400B0), .bgName = "nok_bg" }, + { MAP_UNSPLIT(tst_03, 0x802400B0), .bgName = "nok_bg" }, + { MAP_UNSPLIT(tst_04, 0x80240740), .bgName = "nok_bg" }, + { MAP_UNSPLIT(tst_10, 0x80240040), .bgName = "nok_bg" }, + { MAP_UNSPLIT(tst_11, 0x80240780), .bgName = "nok_bg" }, + { MAP_UNSPLIT(tst_12, 0x80240010), .bgName = "nok_bg" }, + { MAP_UNSPLIT(tst_13, 0x802403D0), .bgName = "nok_bg" }, + { MAP_UNSPLIT(tst_20, 0x80240010), .bgName = "nok_bg" }, +}; + +/// Credits +static Map end_maps[] = { + { MAP_UNSPLIT(end_00, 0x80242B50), .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(end_01, 0x80243000), .init = (MapInitialiser*)0x80240000 }, +}; + +/// Toad Town Playroom +static Map mgm_maps[] = { + { MAP_UNSPLIT(mgm_00, 0x80241810) }, + { MAP_UNSPLIT(mgm_01, 0x802417C0) }, + { MAP_UNSPLIT(mgm_02, 0x80242410) }, + { MAP_UNSPLIT(mgm_03, 0x80240010) }, +}; + +/// Game Over +static Map gv_maps[] = { + { MAP_UNSPLIT(gv_01, 0x802407D0) }, +}; + +Area gAreas[] = { + AREA(kmr, "クリむら"), // kuri mura [kuribou village, Goomba Village] + AREA(mac, "まち"), // machi [town, Toad Town] + AREA(tik, "まちのちか"), // machi no chika [under the town, Toad Town Tunnels] + AREA(kgr, "くじらのなか"), // kujira no naka [inside the whale] + AREA(kkj, "きのこ城"), // kinoko shiro [mushroom castle, Princess Peach's Castle] + AREA(hos, "星ふる丘"), // hoshi furu oka [star fall hill, Shooting Star Summit] + AREA(nok, "ノコノコむら"), // nokonoko mura [nokonoko village, Koopa Village] + AREA(trd, "とりで"), // toride [fortress, Koopa Bros. Fortress] + AREA(iwa, "岩山"), // iwayama [rock mountain, Mt. Rugged] + AREA(dro, "カラカラタウン"), // karakara taun [dried up town, Dry Dry Outpost] + AREA(sbk, "カラカラ砂漠"), // karakara sabaku [dried up desert, Dry Dry Desert] + AREA(isk, "カラカラいせき"), // karakara iseki [dried up ruins, Dry Dry Ruins] + AREA(mim, "迷いの森"), // mayoi no mori [lost forest, Forever Forest] + AREA(obk, "テレサハウス"), // teresa hausu [teresa house, Boo's Mansion] + AREA(arn, "あれの"), // areno [wasteland, Gusty Gulch] + AREA(dgb, "ドガボンの城"), // dogabon no shiro [dogabon's castle, Tubba Blubba's Castle] + AREA(omo, "ヘイホーのおもちゃばこ"), // heiho no omochabako [heiho's toy box, Shy Guy's Toy Box] + AREA(jan, "ジャングル"), // janguru [jungle, Jade Jungle] + AREA(kzn, "火山"), // kazan [volcano, Mt. Lavalava] + AREA(flo, "フラワーランド"), // furawaa rando [flower land, Flower Fields] + AREA(sam, "さむいさむい村"), // samui samui mura [cold cold village, Shiver City] + AREA(pra, "パラレルきゅうでん"), // parareru kyuuden [parallel palace, Crystal Palace] + AREA(kpa, "クッパ城"), // kuppa shiro [koopa's castle, Bowser's Castle] + AREA(osr, "きのこ城そと"), // kinoko shiro soto [outside mushroom castle, Outside Peach's Castle] + AREA(end, "エンディング"), // endingu [Ending] + AREA(mgm, "ミニゲーム"), // minige-mu [Minigames] + AREA(gv, "ゲームオーバー"), // ge-mu o-ba- [Game Over] + AREA(tst, "テストマップ"), // tesuto mappu [Test map] + 0, 0, 0, 0, +}; diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index bd04bf4db9..a1b3cf4fab 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -4,7 +4,7 @@ void func_8014AC84(s16 volume); /// If the given song ID is present in gSongsUsingVariationFlag, returns the current -/// map's `flags2 & 1` value. Otherwise, returns -1. +/// map's `songVariation & 1` value. Otherwise, returns -1. /// /// @see gSongsUsingVariationFlag /// @returns -1: no override; 0: override to variation 0; 1 override to variation 1 @@ -19,7 +19,7 @@ s32 get_song_variation_override_for_cur_map(SongID songID) { GameStatus* gameStatus = *gameStatusPtr; Map* map = &areas[gameStatus->areaID].maps[gameStatus->mapID]; - return map->flags2 & 1; + return map->songVariation & 1; } } diff --git a/src/world/area_kmr/kmr_12/kmr_12.h b/src/world/area_kmr/kmr_12/kmr_12.h index 406b7f4299..573ea67911 100644 --- a/src/world/area_kmr/kmr_12/kmr_12.h +++ b/src/world/area_kmr/kmr_12/kmr_12.h @@ -8,6 +8,8 @@ #define GetGoomba M(GetGoomba) ApiStatus GetGoomba(ScriptInstance* script, s32 isInitialCall); +MapConfig M(config); + Script M(Main); Script M(PlayMusic); Script M(MakeEntities); diff --git a/tools/n64splat b/tools/n64splat index fdb44704e6..03bc049656 160000 --- a/tools/n64splat +++ b/tools/n64splat @@ -1 +1 @@ -Subproject commit fdb44704e6da70d5d2bab3bfc2e307745600fe0d +Subproject commit 03bc04965678a0484257fdc2a566e905fb4ee653 diff --git a/tools/splat.yaml b/tools/splat.yaml index 4650d48de1..e813489ef3 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -197,7 +197,10 @@ segments: - [0x4a360, "c", "os/code_4a360_len_930"] - [0x4ac90, "c", "os/code_4ac90_len_3910"] - [0x4E5A0, "bin"] - - [0x6E8F0, "bin", "world/area_table"] + - [0x52D50, "bin"] + - [0x6B450, ".data", "code_341d0_len_20d0"] + - [0x6EAC0, "bin"] # has scripts + - [0x73DA0, ".rodata", "code_341d0_len_20d0"] - type: code start: 0x759B0 vram: 0x800DC500 diff --git a/tools/symbol_addrs.txt b/tools/symbol_addrs.txt index a82b45a98d..9c89ca7b9c 100644 --- a/tools/symbol_addrs.txt +++ b/tools/symbol_addrs.txt @@ -1904,5 +1904,4 @@ gMusicUnkVolume;0x80159AE0 gMusicUnkVolume2;0x80159AE4 gMusicTargetVolume;0x80159AE2 gMusicCurVolume;0x80159AE6 -gAreas;0x800934F0 gSongArray;0x8014F720 diff --git a/undefined_syms.txt b/undefined_syms.txt index b5fe5e04f0..4aa926a174 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -264,5 +264,4 @@ EnemyNpcDefeat = 0x8007809C; D_80078DB0 = 0x80078DB0; D_80078DB4 = 0x80078DB4; -gAreas = 0x800934F0; gSongsUsingVariationFlag = 0x8014F720; From 8939f6da763f2dd09564e3f6ba7803ac63a683c8 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 17:45:38 +0000 Subject: [PATCH 03/16] fix dma_copy --- src/code_42e0_len_1f60.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/code_42e0_len_1f60.c b/src/code_42e0_len_1f60.c index b38715016e..5a96a65017 100644 --- a/src/code_42e0_len_1f60.c +++ b/src/code_42e0_len_1f60.c @@ -53,7 +53,7 @@ void copy_matrix(Matrix4f* src, Matrix4f* dest) { bcopy(src, dest, sizeof(Matrix4f)); } -INCLUDE_ASM(s32, "code_42e0_len_1f60", dma_copy); +INCLUDE_ASM(void, "code_42e0_len_1f60", dma_copy, void* romStart, void* romEnd, void* vramDest); INCLUDE_ASM(s32, "code_42e0_len_1f60", func_800297D4); From 0c2d448abbac653530e90c2ae5faf7b4563dc0ed Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 18:43:53 +0000 Subject: [PATCH 04/16] match start of rodata_73DA0 --- src/code_341d0_len_20d0.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/code_341d0_len_20d0.c b/src/code_341d0_len_20d0.c index d012373330..7808dbbc2b 100644 --- a/src/code_341d0_len_20d0.c +++ b/src/code_341d0_len_20d0.c @@ -51,9 +51,22 @@ void load_world_script_api(void) { dma_copy(&world_script_api_ROM_START, &world_script_api_ROM_END, &world_script_api_VRAM); } -//const char* shape_sprintf = "%s_shape"; -//const char* hit_sprintf = "%s_hit"; -//const char* tex_sprintf = "%s_tex"; +// TODO +static const s32 rodata_73DA0[] = { + 0x82C882B5, 0x00000000, 0x82A982AD, 0x82B982A2, + 0x00000000, 0x82B982C1, 0x82AB82E5, 0x82A40000, + 0x82DE82C9, 0x82E182DE, 0x82C982E1, 0x00000000, + 0x82D082C6, 0x82E882DA, 0x82AF0000, 0x83748340, + 0x83438369, 0x838B837B, 0x83808377, 0x83430000, + 0x83748340, 0x83438369, 0x838B834E, 0x838A8357, + 0x83430000, 0X82C282A4, 0x82B682E5, 0x82A40000, + + // These string literals belong to load_map_by_IDs + 0x25735F73, 0x68617065, 0x00000000, // "%_shape" + 0x25735F68, 0x69740000, // "%s_hit" + 0x25735F74, 0x65780000, // "%s_tex" +}; + INCLUDE_ASM(s32, "code_341d0_len_20d0", load_map_by_IDs); INCLUDE_ASM(s32, "code_341d0_len_20d0", get_current_map_config); From a912691cfb827d106fb2486b1c1ea854dba86984 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 18:45:23 +0000 Subject: [PATCH 05/16] match SJIS --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index ece296eab5..70b5f0dc8f 100644 --- a/Makefile +++ b/Makefile @@ -132,12 +132,12 @@ $(BUILD_DIR)/%.Yay0.o: $(BUILD_DIR)/%.bin.Yay0 # Compile C files $(BUILD_DIR)/%.c.o: %.c $(MDEPS) @mkdir -p $(shell dirname $@) - $(CPP) $(CPPFLAGS) -o - $< $(CPPMFLAGS) | $(CC) $(CFLAGS) -o - | $(OLD_AS) $(OLDASFLAGS) -o $@ - + iconv --from UTF-8 --to SHIFT-JIS $< | $(CPP) $(CPPFLAGS) -o - $(CPPMFLAGS) | $(CC) $(CFLAGS) -o - | $(OLD_AS) $(OLDASFLAGS) -o $@ - # Compile C files (with DSL macros) $(foreach cfile, $(DSL_C_FILES), $(BUILD_DIR)/$(cfile).o): $(BUILD_DIR)/%.c.o: %.c $(MDEPS) @mkdir -p $(shell dirname $@) - $(CPP) $(CPPFLAGS) -o - $< $(CPPMFLAGS) | tools/compile_dsl_macros.py | $(CC) $(CFLAGS) -o - | $(OLD_AS) $(OLDASFLAGS) -o $@ - + iconv --from UTF-8 --to SHIFT-JIS $< | $(CPP) $(CPPFLAGS) -o - $(CPPMFLAGS) | tools/compile_dsl_macros.py | $(CC) $(CFLAGS) -o - | $(OLD_AS) $(OLDASFLAGS) -o $@ - # Assemble handwritten ASM $(BUILD_DIR)/%.s.o: %.s From c1c0a98810125429b8f8543d4405cd975b03cf87 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 18:58:59 +0000 Subject: [PATCH 06/16] match area table YOOOOOOOOOOOOOO --- src/code_341d0_len_20d0.c | 4 ++-- tools/splat.yaml | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/code_341d0_len_20d0.c b/src/code_341d0_len_20d0.c index 7808dbbc2b..1ba99a02de 100644 --- a/src/code_341d0_len_20d0.c +++ b/src/code_341d0_len_20d0.c @@ -330,8 +330,8 @@ static Map kpa_maps[] = { { MAP_UNSPLIT(kpa_94, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_95, 0x80241920), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_96, 0x80240040), .songVariation = 1, .flags = 1 }, - { MAP_UNSPLIT(kpa_100, 0x80240060), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kpa_101, 0x80240060), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_100, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_101, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, { MAP_UNSPLIT(kpa_102, 0x802435B0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_111, 0x802413E0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_112, 0x80240020), .songVariation = 1, .flags = 2 }, diff --git a/tools/splat.yaml b/tools/splat.yaml index e813489ef3..4410ca32ee 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -201,6 +201,7 @@ segments: - [0x6B450, ".data", "code_341d0_len_20d0"] - [0x6EAC0, "bin"] # has scripts - [0x73DA0, ".rodata", "code_341d0_len_20d0"] + - [0x74EA0, "bin"] - type: code start: 0x759B0 vram: 0x800DC500 @@ -4883,11 +4884,11 @@ segments: - [0xC047F0, "bin"] - [0xC20C70, "bin"] # rodata - [0xC20CF8, "bin"] # rodata - - [0xC20F40, "bin"] # rodata + - [0xC20F40, "bin"] - name: world/area_dgb/dgb_02/ type: code overlay: True - start: 0xC2EBA0 + start: 0xC2EBA0 # this is right vram: 0x80240000 files: - [0xC2EBA0, "c"] @@ -6503,7 +6504,7 @@ segments: files: - [0xE1E460, "c"] - [0xE1EC20, "bin"] - - [0xE20110, "bin"] + - [0xE20110, "bin"] - type: code overlay: True start: 0xE20EB0 From 3206f6ffde4b8b504c5c079dfc9a694e8bc175cd Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 19:01:24 +0000 Subject: [PATCH 07/16] name code_341d0_len_20d0.c --- src/{code_341d0_len_20d0.c => world/world.c} | 0 tools/splat.yaml | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/{code_341d0_len_20d0.c => world/world.c} (100%) diff --git a/src/code_341d0_len_20d0.c b/src/world/world.c similarity index 100% rename from src/code_341d0_len_20d0.c rename to src/world/world.c diff --git a/tools/splat.yaml b/tools/splat.yaml index 4410ca32ee..12669b66e4 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -58,7 +58,7 @@ segments: - [0x2d9a0, "c", "code_2d9a0_len_890"] - [0x2e230, "c", "code_2e230_len_2190"] - [0x303c0, "c", "code_303c0_len_3e10"] - - [0x341d0, "c", "code_341d0_len_20d0"] + - [0x341d0, "c", "world/world"] - [0x362a0, "c", "code_362a0_len_2f70"] - [0x39210, "c", "code_39210_len_aa0"] - [0x39cb0, "c", "os/code_39cb0_len_100"] @@ -198,9 +198,9 @@ segments: - [0x4ac90, "c", "os/code_4ac90_len_3910"] - [0x4E5A0, "bin"] - [0x52D50, "bin"] - - [0x6B450, ".data", "code_341d0_len_20d0"] + - [0x6B450, ".data", "world/world"] - [0x6EAC0, "bin"] # has scripts - - [0x73DA0, ".rodata", "code_341d0_len_20d0"] + - [0x73DA0, ".rodata", "world/world"] - [0x74EA0, "bin"] - type: code start: 0x759B0 From 241b037b5cd08d6a45acc568918013a033395b2c Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 19:08:29 +0000 Subject: [PATCH 08/16] iconv after preprocessing --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 70b5f0dc8f..06896b9546 100644 --- a/Makefile +++ b/Makefile @@ -132,12 +132,12 @@ $(BUILD_DIR)/%.Yay0.o: $(BUILD_DIR)/%.bin.Yay0 # Compile C files $(BUILD_DIR)/%.c.o: %.c $(MDEPS) @mkdir -p $(shell dirname $@) - iconv --from UTF-8 --to SHIFT-JIS $< | $(CPP) $(CPPFLAGS) -o - $(CPPMFLAGS) | $(CC) $(CFLAGS) -o - | $(OLD_AS) $(OLDASFLAGS) -o $@ - + $(CPP) $(CPPFLAGS) -o - $(CPPMFLAGS) $< | iconv --from UTF-8 --to SHIFT-JIS | $(CC) $(CFLAGS) -o - | $(OLD_AS) $(OLDASFLAGS) -o $@ - # Compile C files (with DSL macros) $(foreach cfile, $(DSL_C_FILES), $(BUILD_DIR)/$(cfile).o): $(BUILD_DIR)/%.c.o: %.c $(MDEPS) @mkdir -p $(shell dirname $@) - iconv --from UTF-8 --to SHIFT-JIS $< | $(CPP) $(CPPFLAGS) -o - $(CPPMFLAGS) | tools/compile_dsl_macros.py | $(CC) $(CFLAGS) -o - | $(OLD_AS) $(OLDASFLAGS) -o $@ - + $(CPP) $(CPPFLAGS) -o - $(CPPMFLAGS) $< | tools/compile_dsl_macros.py | iconv --from UTF-8 --to SHIFT-JIS | $(CC) $(CFLAGS) -o - | $(OLD_AS) $(OLDASFLAGS) -o $@ - # Assemble handwritten ASM $(BUILD_DIR)/%.s.o: %.s From 202fc247ad41bba1a5bbf51bdcef0f2e90363f70 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 19:09:09 +0000 Subject: [PATCH 09/16] format --- src/code_28910_len_5090.c | 2 +- src/world/world.c | 68 +++++++++++++++++++-------------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/code_28910_len_5090.c b/src/code_28910_len_5090.c index 62fe271554..40274bd6f0 100644 --- a/src/code_28910_len_5090.c +++ b/src/code_28910_len_5090.c @@ -33,7 +33,7 @@ s32 func_8004DA0C(UNK_TYPE arg0) { INCLUDE_ASM(s32, "code_28910_len_5090", func_8004DA74); -void func_8004DAA8(UnkStructFor8004DAA8 *arg0) { +void func_8004DAA8(UnkStructFor8004DAA8* arg0) { if (arg0->unk_221 != 0) { arg0->unk_221 = 4; arg0->unk_010 = 1; diff --git a/src/world/world.c b/src/world/world.c index 1ba99a02de..e735380720 100644 --- a/src/world/world.c +++ b/src/world/world.c @@ -296,40 +296,40 @@ static Map hos_maps[] = { /// Bowser's Castle static Map kpa_maps[] = { - { MAP_UNSPLIT(kpa_01, 0x80240A70), .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_03, 0x80241EE0), .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_04, 0x80240190), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_08, 0x802414C0), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_09, 0x80241310), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_10, 0x80240360), .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_11, 0x80240B40), .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_12, 0x802404A0), .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_13, 0x802404A0), .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_14, 0x802408A0), .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_15, 0x802405E0), .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_16, 0x802403B0), .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_17, 0x80240020), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_32, 0x80240350), .bgName = "kpa_bg", .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_33, 0x80240350), .bgName = "kpa_bg", .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_40, 0x80240040), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_41, 0x80240040), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_50, 0x80241A40), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_51, 0x80241C40), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kpa_52, 0x80241360), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_53, 0x80240190), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kpa_60, 0x80240450), .bgName = "kpa_bg" }, - { MAP_UNSPLIT(kpa_61, 0x80242360), .bgName = "kpa_bg" }, - { MAP_UNSPLIT(kpa_62, 0x80240430), .bgName = "kpa_bg" }, - { MAP_UNSPLIT(kpa_63, 0x802401B0), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_70, 0x80240B10), .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_81, 0x80240480), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kpa_82, 0x80240460), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kpa_83, 0x80240090), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kpa_90, 0x80240020), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_91, 0x80241920), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_94, 0x80240020), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_95, 0x80241920), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_96, 0x80240040), .songVariation = 1, .flags = 1 }, + { MAP_UNSPLIT(kpa_01, 0x80240A70), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_03, 0x80241EE0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_04, 0x80240190), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_08, 0x802414C0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_09, 0x80241310), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_10, 0x80240360), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_11, 0x80240B40), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_12, 0x802404A0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_13, 0x802404A0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_14, 0x802408A0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_15, 0x802405E0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_16, 0x802403B0), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_17, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_32, 0x80240350), .bgName = "kpa_bg", .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_33, 0x80240350), .bgName = "kpa_bg", .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_40, 0x80240040), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_41, 0x80240040), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_50, 0x80241A40), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_51, 0x80241C40), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_52, 0x80241360), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_53, 0x80240190), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_60, 0x80240450), .bgName = "kpa_bg" }, + { MAP_UNSPLIT(kpa_61, 0x80242360), .bgName = "kpa_bg" }, + { MAP_UNSPLIT(kpa_62, 0x80240430), .bgName = "kpa_bg" }, + { MAP_UNSPLIT(kpa_63, 0x802401B0), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_70, 0x80240B10), .songVariation = 1, .flags = 3 }, + { MAP_UNSPLIT(kpa_81, 0x80240480), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_82, 0x80240460), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_83, 0x80240090), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_90, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_91, 0x80241920), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_94, 0x80240020), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_95, 0x80241920), .songVariation = 1, .flags = 2 }, + { MAP_UNSPLIT(kpa_96, 0x80240040), .songVariation = 1, .flags = 1 }, { MAP_UNSPLIT(kpa_100, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, { MAP_UNSPLIT(kpa_101, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, { MAP_UNSPLIT(kpa_102, 0x802435B0), .songVariation = 1, .flags = 3 }, From 74e8c61db17acd04a3cff46aa4a08339eb8b4569 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 19:28:42 +0000 Subject: [PATCH 10/16] bump splat --- tools/n64splat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/n64splat b/tools/n64splat index 03bc049656..51961d2977 160000 --- a/tools/n64splat +++ b/tools/n64splat @@ -1 +1 @@ -Subproject commit 03bc04965678a0484257fdc2a566e905fb4ee653 +Subproject commit 51961d2977be12c340f0cc1d28d2c876dfc744ca From 476701e55201775a310611727eacef227ea94735 Mon Sep 17 00:00:00 2001 From: Alex Bates <16batesa@gmail.com> Date: Fri, 30 Oct 2020 23:41:09 +0000 Subject: [PATCH 11/16] rebuild assets.bin when sources.mk changes --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 06896b9546..53c762314b 100644 --- a/Makefile +++ b/Makefile @@ -151,7 +151,7 @@ $(BUILD_DIR)/bin/assets/%: bin/assets/%.bin @mkdir -p $(shell dirname $@) @cp $< $@ -$(ASSETS_BIN): $(ASSET_FILES) $(YAY0_ASSET_FILES) +$(ASSETS_BIN): sources.mk $(ASSET_FILES) $(YAY0_ASSET_FILES) @mkdir -p $(shell dirname $@) @echo "building $@" @$(PYTHON) tools/build_assets_bin.py $@ $(ASSET_FILES) From f0c4df447a974f71ec1a771e64e5a7142d37c25a Mon Sep 17 00:00:00 2001 From: Alex Bates <16batesa@gmail.com> Date: Fri, 30 Oct 2020 23:41:49 +0000 Subject: [PATCH 12/16] squash warnings --- src/world/world.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/world/world.c b/src/world/world.c index e735380720..46153a777a 100644 --- a/src/world/world.c +++ b/src/world/world.c @@ -79,7 +79,7 @@ INCLUDE_ASM(void*, "code_341d0_len_20d0", load_asset_by_name, char* name, s32* d INCLUDE_ASM(s32, "code_341d0_len_20d0", get_asset_offset); -#define AREA(area, jp_name) { ARRAY_COUNT(area##_maps), &area##_maps, "area_" #area, jp_name } +#define AREA(area, jp_name) { ARRAY_COUNT(area##_maps), area##_maps, "area_" #area, jp_name } #define MAP(map) \ .id = #map, \ From edfc6e8cf56000e39a9adecacf011047d2419044 Mon Sep 17 00:00:00 2001 From: Alex Bates <16batesa@gmail.com> Date: Sat, 31 Oct 2020 04:46:57 +0000 Subject: [PATCH 13/16] remove 'this is right' lol --- tools/splat.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/splat.yaml b/tools/splat.yaml index 12669b66e4..6653b3a659 100644 --- a/tools/splat.yaml +++ b/tools/splat.yaml @@ -4888,7 +4888,7 @@ segments: - name: world/area_dgb/dgb_02/ type: code overlay: True - start: 0xC2EBA0 # this is right + start: 0xC2EBA0 vram: 0x80240000 files: - [0xC2EBA0, "c"] From efc303a70d2d8add93b308bc54f25a3f633f31bf Mon Sep 17 00:00:00 2001 From: Alex Bates <16batesa@gmail.com> Date: Sat, 31 Oct 2020 04:49:04 +0000 Subject: [PATCH 14/16] avoid #including all map headers in world.c --- src/world/world.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/world/world.c b/src/world/world.c index 46153a777a..6b3558a438 100644 --- a/src/world/world.c +++ b/src/world/world.c @@ -2,9 +2,6 @@ #include "ld_addrs.h" #include "map.h" -#include "world/area_kmr/kmr_12/kmr_12.h" -#undef MAP_NAME - INCLUDE_ASM(s32, "code_341d0_len_20d0", func_80058DD0); INCLUDE_ASM(s32, "code_341d0_len_20d0", func_80058E84); @@ -141,6 +138,7 @@ static Map kgr_maps[] = { }; /// Goomba Region +MapConfig kmr_12_config; static Map kmr_maps[] = { { MAP_UNSPLIT(kmr_00, 0x80240D80), .bgName = "kmr_bg", .flags = 1 }, { MAP_UNSPLIT(kmr_02, 0x80243AF0), .bgName = "kmr_bg" }, From abcda77e2c34794f1424f7634f3d0513a50b4103 Mon Sep 17 00:00:00 2001 From: Alex Bates <16batesa@gmail.com> Date: Sat, 31 Oct 2020 20:04:33 +0000 Subject: [PATCH 15/16] MapInitialiser -> MapInit --- include/map.h | 4 +- src/world/world.c | 122 +++++++++++++++++++++++----------------------- 2 files changed, 63 insertions(+), 63 deletions(-) diff --git a/include/map.h b/include/map.h index 7336be6331..17c78e59ac 100644 --- a/include/map.h +++ b/include/map.h @@ -33,7 +33,7 @@ typedef struct MapConfig { } tattle; } MapConfig; // size = 0x40 -typedef s32 MapInitialiser(void); +typedef s32 MapInit(void); #define MAP_ID_MAX_LEN 7 ///< "xxx_yyy" excluding null terminator. typedef struct Map { @@ -43,7 +43,7 @@ typedef struct Map { /* 0x0C */ void* dmaEnd; /* 0x10 */ void* dmaDest; /* 0x14 */ char* bgName; - /* 0x18 */ MapInitialiser* init; ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading. + /* 0x18 */ MapInit* init; ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading. /* 0x1C */ s16 unk_1C; // Unused? /* 0x1E */ s8 songVariation; ///< 0 or 1. @see get_song_variation_override_for_cur_map /* 0x1F */ s8 flags; diff --git a/src/world/world.c b/src/world/world.c index 6b3558a438..caa2f6e98e 100644 --- a/src/world/world.c +++ b/src/world/world.c @@ -100,7 +100,7 @@ static Map mac_maps[] = { { MAP_UNSPLIT(mac_01, 0x80246730), .bgName = "nok_bg" }, { MAP_UNSPLIT(mac_02, 0x80243580), .bgName = "nok_bg" }, { MAP_UNSPLIT(mac_03, 0x802428B0), .bgName = "nok_bg" }, - { MAP_UNSPLIT(mac_04, 0x80242080), .bgName = "nok_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(mac_04, 0x80242080), .bgName = "nok_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(mac_05, 0x802441A0), .bgName = "nok_bg" }, { MAP_UNSPLIT(mac_06, 0x802416A0), .bgName = "nok_bg" }, }; @@ -127,7 +127,7 @@ static Map tik_maps[] = { { MAP_UNSPLIT(tik_21, 0x80240990), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_22, 0x802409D0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(tik_23, 0x80241160), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(tik_24, 0x80240ED0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(tik_24, 0x80240ED0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(tik_25, 0x802407D0), .songVariation = 1, .flags = 2 }, }; @@ -152,10 +152,10 @@ static Map kmr_maps[] = { { MAP_UNSPLIT(kmr_11, 0x80241180), .bgName = "kmr_bg" }, { MAP(kmr_12), .bgName = "kmr_bg" }, { MAP_UNSPLIT(kmr_20, 0x80242C00), .bgName = "kmr_bg" }, // Mario's House - { MAP_UNSPLIT(kmr_21, 0x802402F0), .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kmr_22, 0x80240DA0), .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kmr_23, 0x80241150), .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kmr_24, 0x80240120), .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kmr_21, 0x802402F0), .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(kmr_22, 0x80240DA0), .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(kmr_23, 0x80241150), .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(kmr_24, 0x80240120), .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kmr_30, 0x802404F0) }, }; @@ -281,14 +281,14 @@ static Map nok_maps[] = { /// Star Region static Map hos_maps[] = { - { MAP_UNSPLIT(hos_00, 0x80240D50), .bgName = "nok_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(hos_00, 0x80240D50), .bgName = "nok_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(hos_01, 0x80240E40), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_02, 0x80242B90), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_03, 0x802435F0), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_04, 0x80240EE0), .bgName = "hos_bg" }, { MAP_UNSPLIT(hos_05, 0x80245910), .bgName = "hos_bg", .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(hos_06, 0x80242570), .bgName = "hos_bg" }, - { MAP_UNSPLIT(hos_10, 0x80240CE0), .bgName = "hos_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(hos_10, 0x80240CE0), .bgName = "hos_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(hos_20, 0x80240390), .bgName = "hos_bg" }, }; @@ -312,29 +312,29 @@ static Map kpa_maps[] = { { MAP_UNSPLIT(kpa_40, 0x80240040), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_41, 0x80240040), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_50, 0x80241A40), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_51, 0x80241C40), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_51, 0x80241C40), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_52, 0x80241360), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kpa_53, 0x80240190), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_53, 0x80240190), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_60, 0x80240450), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kpa_61, 0x80242360), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kpa_62, 0x80240430), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kpa_63, 0x802401B0), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_70, 0x80240B10), .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_81, 0x80240480), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kpa_82, 0x80240460), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kpa_83, 0x80240090), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_81, 0x80240480), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(kpa_82, 0x80240460), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(kpa_83, 0x80240090), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_90, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_91, 0x80241920), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_94, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_95, 0x80241920), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_96, 0x80240040), .songVariation = 1, .flags = 1 }, - { MAP_UNSPLIT(kpa_100, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kpa_101, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_100, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(kpa_101, 0x80240060), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_102, 0x802435B0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_111, 0x802413E0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_112, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_113, 0x80240AD0), .songVariation = 1, .flags = 3 }, - { MAP_UNSPLIT(kpa_114, 0x80240070), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kpa_114, 0x80240070), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kpa_115, 0x802413F0), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kpa_116, 0x80240020), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(kpa_117, 0x80240010), .songVariation = 1, .flags = 1 }, @@ -349,24 +349,24 @@ static Map kpa_maps[] = { /// Peach's Castle Grounds static Map osr_maps[] = { { MAP_UNSPLIT(osr_00, 0x802407E0), .bgName = "nok_bg" }, - { MAP_UNSPLIT(osr_01, 0x80240B00), .bgName = "nok_bg", .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(osr_02, 0x80240170), .bgName = "kpa_bg", .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(osr_03, 0x802403F0), .bgName = "kpa_bg", .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(osr_04, 0x802400D0), .bgName = "nok_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(osr_01, 0x80240B00), .bgName = "nok_bg", .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(osr_02, 0x80240170), .bgName = "kpa_bg", .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(osr_03, 0x802403F0), .bgName = "kpa_bg", .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(osr_04, 0x802400D0), .bgName = "nok_bg", .init = (MapInit*)0x80240000 }, }; /// Peach's Castle /// @bug There are two entries for kkj_26; the latter is unreachable. static Map kkj_maps[] = { - { MAP_UNSPLIT(kkj_00, 0x80241030), .bgName = "nok_bg", .songVariation = 1, .flags = 3, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kkj_00, 0x80241030), .bgName = "nok_bg", .songVariation = 1, .flags = 3, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kkj_01, 0x80240F10), .bgName = "nok_bg", .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kkj_02, 0x80240030), .bgName = "nok_bg", .flags = 2 }, - { MAP_UNSPLIT(kkj_03, 0x80240360), .bgName = "nok_bg", .flags = 3, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kkj_03, 0x80240360), .bgName = "nok_bg", .flags = 3, .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kkj_10, 0x80241120), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kkj_11, 0x80241160), .songVariation = 1, .flags = 3 }, { MAP_UNSPLIT(kkj_12, 0x802408D0), .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kkj_13, 0x802407A0), .bgName = "kpa_bg", .songVariation = 1, .flags = 3, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(kkj_14, 0x80240580), .bgName = "kpa_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kkj_13, 0x802407A0), .bgName = "kpa_bg", .songVariation = 1, .flags = 3, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(kkj_14, 0x80240580), .bgName = "kpa_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kkj_15, 0x80240640) }, { MAP_UNSPLIT(kkj_16, 0x80241090), .flags = 0x1 }, { MAP_UNSPLIT(kkj_17, 0x802405B0) }, @@ -375,9 +375,9 @@ static Map kkj_maps[] = { { MAP_UNSPLIT(kkj_20, 0x80240600) }, { MAP_UNSPLIT(kkj_21, 0x80240010), .flags = 0x1 }, { MAP_UNSPLIT(kkj_22, 0x80240020), .bgName = "kpa_bg", .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kkj_23, 0x802409F0), .bgName = "kpa_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kkj_23, 0x802409F0), .bgName = "kpa_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kkj_24, 0x80240040), .bgName = "kpa_bg", .songVariation = 1, .flags = 2 }, - { MAP_UNSPLIT(kkj_25, 0x80240F50), .bgName = "kpa_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(kkj_25, 0x80240F50), .bgName = "kpa_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(kkj_26, 0x80240070), .bgName = "kpa_bg" }, { MAP_UNSPLIT(kkj_26, 0x80240070), .flags = 0x2 }, { MAP_UNSPLIT(kkj_27, 0x802404C0), .flags = 0x1 }, @@ -457,7 +457,7 @@ static Map arn_maps[] = { /// Tubba Blubba's Castle static Map dgb_maps[] = { - { MAP_UNSPLIT(dgb_00, 0x802400D0), .bgName = "arn_bg", .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(dgb_00, 0x802400D0), .bgName = "arn_bg", .init = (MapInit*)0x80240000 }, { MAP_UNSPLIT(dgb_01, 0x80243460), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_02, 0x80241470), .songVariation = 1, .flags = 2 }, { MAP_UNSPLIT(dgb_03, 0x80242830), .songVariation = 1, .flags = 2 }, @@ -541,38 +541,38 @@ static Map sam_maps[] = { /// Crystal Palace static Map pra_maps[] = { - { MAP_UNSPLIT(pra_01, 0x80241400), .bgName = "yki_bg", .flags = 1, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_02, 0x802416C0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_03, 0x802401E0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_04, 0x80240970), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_05, 0x802411F0), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_06, 0x80240F60), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_09, 0x80241670), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_10, 0x802416D0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_11, 0x802411F0), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_12, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_13, 0x80241620), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_14, 0x80241200), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_15, 0x80240050), .bgName = "yki_bg", .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_16, 0x80240F60), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_18, 0x80240F50), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_19, 0x802419D0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_20, 0x80240F70), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_21, 0x80240140), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_22, 0x802402F0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_27, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_28, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_29, 0x802412C0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_31, 0x802410E0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_32, 0x80240850), .bgName = "sam_bg", .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_33, 0x802410C0), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_34, 0x80241040), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_35, 0x80242C40), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_36, 0x80240F70), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_37, 0x80241840), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_38, 0x80241700), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_39, 0x80241700), .songVariation = 1, .flags = 2, .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(pra_40, 0x80240F40), .songVariation = 1, .flags = 1, .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(pra_01, 0x80241400), .bgName = "yki_bg", .flags = 1, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_02, 0x802416C0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_03, 0x802401E0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_04, 0x80240970), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_05, 0x802411F0), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_06, 0x80240F60), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_09, 0x80241670), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_10, 0x802416D0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_11, 0x802411F0), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_12, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_13, 0x80241620), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_14, 0x80241200), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_15, 0x80240050), .bgName = "yki_bg", .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_16, 0x80240F60), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_18, 0x80240F50), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_19, 0x802419D0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_20, 0x80240F70), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_21, 0x80240140), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_22, 0x802402F0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_27, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_28, 0x80241220), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_29, 0x802412C0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_31, 0x802410E0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_32, 0x80240850), .bgName = "sam_bg", .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_33, 0x802410C0), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_34, 0x80241040), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_35, 0x80242C40), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_36, 0x80240F70), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_37, 0x80241840), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_38, 0x80241700), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_39, 0x80241700), .songVariation = 1, .flags = 2, .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(pra_40, 0x80240F40), .songVariation = 1, .flags = 1, .init = (MapInit*)0x80240000 }, }; /// Shy Guy's Toy Box @@ -611,8 +611,8 @@ static Map tst_maps[] = { /// Credits static Map end_maps[] = { - { MAP_UNSPLIT(end_00, 0x80242B50), .init = (MapInitialiser*)0x80240000 }, - { MAP_UNSPLIT(end_01, 0x80243000), .init = (MapInitialiser*)0x80240000 }, + { MAP_UNSPLIT(end_00, 0x80242B50), .init = (MapInit*)0x80240000 }, + { MAP_UNSPLIT(end_01, 0x80243000), .init = (MapInit*)0x80240000 }, }; /// Toad Town Playroom From dd2eb476dc3194ea532e3c1a1d79492188b3c882 Mon Sep 17 00:00:00 2001 From: Alex Bates <16batesa@gmail.com> Date: Mon, 2 Nov 2020 17:16:26 +0000 Subject: [PATCH 16/16] remove sinful ld_addrs usage --- src/world/world.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/world/world.c b/src/world/world.c index caa2f6e98e..378d91329e 100644 --- a/src/world/world.c +++ b/src/world/world.c @@ -81,17 +81,17 @@ INCLUDE_ASM(s32, "code_341d0_len_20d0", get_asset_offset); #define MAP(map) \ .id = #map, \ .config = &map##_config, \ - .dmaStart = (void*)LD_code_##map##_ROM_START, \ - .dmaEnd = (void*)LD_code_##map##_ROM_END, \ - .dmaDest = (void*)LD_code_##map##_VRAM \ + .dmaStart = &code_##map##_ROM_START, \ + .dmaEnd = &code_##map##_ROM_END, \ + .dmaDest = &code_##map##_VRAM \ // Should be removed once the data section containing .init and .config of all maps have been disassembled #define MAP_UNSPLIT(map, configVRAM) \ .id = #map, \ .config = (MapConfig*)(configVRAM), \ - .dmaStart = (void*)LD_code_##map##_ROM_START, \ - .dmaEnd = (void*)LD_code_##map##_ROM_END, \ - .dmaDest = (void*)LD_code_##map##_VRAM \ + .dmaStart = &code_##map##_ROM_START, \ + .dmaEnd = &code_##map##_ROM_END, \ + .dmaDest = &code_##map##_VRAM \ /// Toad Town static Map mac_maps[] = {