diff --git a/include/include_asm.h b/include/include_asm.h index 55af381a05..747cbf7022 100644 --- a/include/include_asm.h +++ b/include/include_asm.h @@ -6,18 +6,20 @@ #if !defined(SPLAT) && !defined(__CTX__) && !defined(PERMUTER) #ifndef INCLUDE_ASM -#define INCLUDE_ASM(TYPE, FOLDER, NAME, ARGS...) \ +#define INCLUDE_ASM_INTERNAL(TYPE, BASE_FOLDER, FOLDER, NAME, ARGS...) \ __asm__( \ ".section .text\n" \ "\t.align\t2\n" \ "\t.globl\t"#NAME"\n" \ "\t.ent\t"#NAME"\n" \ #NAME ":\n" \ - "\t.include \"ver/"STRINGIFY(VERSION)"/asm/nonmatchings/"FOLDER"/"#NAME".s\"\n" \ + "\t.include \"ver/"STRINGIFY(VERSION)"/asm/"BASE_FOLDER"/"FOLDER"/"#NAME".s\"\n" \ "\t.set reorder\n" \ "\t.set at\n" \ "\t.end\t"#NAME \ ); +#define INCLUDE_ASM(TYPE, FOLDER, NAME, ARGS...) INCLUDE_ASM_INTERNAL(TYPE, "nonmatchings", FOLDER, NAME, ARGS) +#define INCLUDE_ASM_SHIFT(TYPE, FOLDER, NAME, ARGS...) INCLUDE_ASM_INTERNAL(TYPE, "shiftable", FOLDER, NAME, ARGS) #endif __asm__(".include \"include/macro.inc\"\n"); #else diff --git a/src/101b90_len_8f0.c b/src/101b90_len_8f0.c index c8ab8128e2..e869ab28ed 100644 --- a/src/101b90_len_8f0.c +++ b/src/101b90_len_8f0.c @@ -146,6 +146,7 @@ SpriteAnimData* spr_load_sprite(s32 idx, s32 isPlayerSprite, s32 useTailAlloc) { return animData; } +#ifndef SHIFT void spr_init_player_raster_cache(s32 cacheSize, s32 maxRasterSize) { void* raster; s32 i; @@ -173,6 +174,9 @@ void spr_init_player_raster_cache(s32 cacheSize, s32 maxRasterSize) { nuPiReadRom(SpriteDataHeader[0], &PlayerRasterHeader, sizeof(PlayerRasterHeader)); nuPiReadRom(SpriteDataHeader[0] + PlayerRasterHeader[0], D_802E0C20, sizeof(D_802E0C20)); } +#else +INCLUDE_ASM_SHIFT(void, "101b90_len_8f0", spr_init_player_raster_cache); +#endif IMG_PTR spr_get_player_raster(s32 rasterIndex, s32 playerSpriteID) { PlayerSpriteCacheEntry* temp_s0; diff --git a/src/a5dd0_len_114e0.c b/src/a5dd0_len_114e0.c index 24af857120..ade9ad0459 100644 --- a/src/a5dd0_len_114e0.c +++ b/src/a5dd0_len_114e0.c @@ -7,7 +7,7 @@ #include "effects.h" #include "nu/nusys.h" -#ifdef SHIFT +#ifdef SHIFT_VRAM #define AREA_SPECIFIC_ENTITY_VRAM entity_default_VRAM #else #define MODEL_TEXTURE_BASE_ADDRESS 0x8028E000 // TODO shiftability fix diff --git a/src/audio/2e230_len_2190.c b/src/audio/2e230_len_2190.c index 6887d05c9e..77155de23a 100644 --- a/src/audio/2e230_len_2190.c +++ b/src/audio/2e230_len_2190.c @@ -1,10 +1,18 @@ #include "audio.h" +#include "ld_addrs.h" // data extern u16 D_80078530[9]; extern s32 D_8007854C[2]; extern f32 AlTuneScaling[]; + +#ifdef SHIFT +#define SBN_ROM_OFFSET SBN_ROM_START +#else +#define SBN_ROM_OFFSET 0xF00000 +#endif + void func_80052E30(u8 index) { AlUnkVoice* voice = &gSoundGlobals->voices[index]; @@ -12,6 +20,7 @@ void func_80052E30(u8 index) { voice->priority = AU_PRIORITY_FREE; } +#ifndef SHIFT void au_engine_init(s32 outputRate) { AuGlobals* globals; ALHeap* alHeap; @@ -84,7 +93,7 @@ void au_engine_init(s32 outputRate) { voice->priority = AU_PRIORITY_FREE; } - au_load_INIT(globals, 0xF00000, alHeap); + au_load_INIT(globals, SBN_ROM_OFFSET, alHeap); for (i = 0; i < 3; i++) { globals->banks[i] = alHeapAlloc(alHeap, 1, 0x840); @@ -135,6 +144,9 @@ void au_engine_init(s32 outputRate) { func_80057ED0(0); func_80055050(alHeap); } +#else +INCLUDE_ASM_SHIFT(void, "audio/2e230_len_2190", au_engine_init); +#endif static void au_reset_instrument(Instrument* instrument) { instrument->base = DummyInstrumentBase; diff --git a/src/msg.c b/src/msg.c index cb3abe437c..66c756949f 100644 --- a/src/msg.c +++ b/src/msg.c @@ -1342,6 +1342,7 @@ void initialize_printer(MessagePrintState* printer, s32 arg1, s32 arg2) { printer->sizeScale = 1.0f; } +#ifndef SHIFT void dma_load_msg(u32 msgID, void* dest) { u8* addr = (u8*) MSG_ROM_START + (msgID >> 14); // (msgID >> 16) * 4 u8* offset[2]; // start, end @@ -1354,6 +1355,9 @@ void dma_load_msg(u32 msgID, void* dest) { // Load the msg data dma_copy(MSG_ROM_START + offset[0], MSG_ROM_START + offset[1], dest); } +#else +INCLUDE_ASM_SHIFT(void, "msg", dma_load_msg); +#endif s8* load_message_to_buffer(s32 msgID) { s8* prevBufferPos; diff --git a/src/world/world.c b/src/world/world.c index e528e55326..6dc1ba7acc 100644 --- a/src/world/world.c +++ b/src/world/world.c @@ -210,6 +210,7 @@ s32 get_map_IDs_by_name(const char* mapName, s16* areaID, s16* mapID) { return FALSE; } +#ifndef SHIFT void* load_asset_by_name(const char* assetName, u32* decompressedSize) { AssetHeader firstHeader; AssetHeader* assetTableBuffer; @@ -230,7 +231,11 @@ void* load_asset_by_name(const char* assetName, u32* decompressedSize) { heap_free(assetTableBuffer); return ret; } +#else +INCLUDE_ASM_SHIFT(void*, "world/world", load_asset_by_name); +#endif +#ifndef SHIFT s32 get_asset_offset(char* assetName, s32* compressedSize) { AssetHeader firstHeader; AssetHeader* assetTableBuffer; @@ -249,6 +254,9 @@ s32 get_asset_offset(char* assetName, s32* compressedSize) { heap_free(assetTableBuffer); return ret; } +#else +INCLUDE_ASM_SHIFT(s32, "world/world", get_asset_offset); +#endif #define AREA(area, jp_name) { ARRAY_COUNT(area##_maps), area##_maps, "area_" #area, jp_name } diff --git a/tools/build/configure.py b/tools/build/configure.py index cf9ccc1b34..819f57e434 100755 --- a/tools/build/configure.py +++ b/tools/build/configure.py @@ -722,6 +722,7 @@ if __name__ == "__main__": parser.add_argument("--no-split-assets", action="store_true", help="Don't split assets from the baserom(s)") parser.add_argument("-d", "--debug", action="store_true", help="Generate debugging information") parser.add_argument("-n", "--non-matching", action="store_true", help="Compile nonmatching code. Combine with --debug for more detailed debug info") + parser.add_argument("--shift", action="store_true", help="Build a shiftable ROM") parser.add_argument("-w", "--no-warn", action="store_true", help="Inhibit compiler warnings") parser.add_argument("--ccache", action="store_true", help="Use ccache") args = parser.parse_args() @@ -783,6 +784,9 @@ if __name__ == "__main__": # g1 doesn't affect codegen cflags += " -ggdb3" + if args.shift: + cppflags += " -DSHIFT" + if not args.no_warn: cflags += " -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes" diff --git a/ver/us/asm/nonmatchings/C50A0/item_entity_load.s b/ver/us/asm/nonmatchings/C50A0/item_entity_load.s index 00a79d1e3e..2961643652 100644 --- a/ver/us/asm/nonmatchings/C50A0/item_entity_load.s +++ b/ver/us/asm/nonmatchings/C50A0/item_entity_load.s @@ -29,8 +29,8 @@ glabel item_entity_load /* C786C 8013116C 3C108009 */ lui $s0, %hi(gItemEntityScripts) /* C7870 80131170 02028021 */ addu $s0, $s0, $v0 /* C7874 80131174 8E10DDD4 */ lw $s0, %lo(gItemEntityScripts)($s0) -/* C7878 80131178 3C16001D */ lui $s6, 0x1d -/* C787C 8013117C 26D6C310 */ addiu $s6, $s6, -0x3cf0 +/* C7878 80131178 3C16001D */ lui $s6, %hi(icon_present_ROM_START) +/* C787C 8013117C 26D6C310 */ addiu $s6, $s6, %lo(icon_present_ROM_START) /* C7880 80131180 AFD00024 */ sw $s0, 0x24($fp) /* C7884 80131184 AFD00028 */ sw $s0, 0x28($fp) .L80131188_C7888: diff --git a/ver/us/asm/nonmatchings/evt/demo_api/SetSpriteShading.s b/ver/us/asm/nonmatchings/evt/demo_api/SetSpriteShading.s index 2dfc066c63..1ddbe95543 100644 --- a/ver/us/asm/nonmatchings/evt/demo_api/SetSpriteShading.s +++ b/ver/us/asm/nonmatchings/evt/demo_api/SetSpriteShading.s @@ -23,8 +23,8 @@ glabel SetSpriteShading /* FE0F8 802D9748 2403FFFF */ addiu $v1, $zero, -1 /* FE0FC 802D974C 104300AF */ beq $v0, $v1, .L802D9A0C /* FE100 802D9750 24020002 */ addiu $v0, $zero, 2 -/* FE104 802D9754 3C100031 */ lui $s0, 0x31 -/* FE108 802D9758 26105B80 */ addiu $s0, $s0, 0x5b80 +/* FE104 802D9754 3C100031 */ lui $s0, %hi(sprite_shading_profiles_ROM_START) +/* FE108 802D9758 26105B80 */ addiu $s0, $s0, %lo(sprite_shading_profiles_ROM_START) /* FE10C 802D975C 00D02021 */ addu $a0, $a2, $s0 /* FE110 802D9760 26050008 */ addiu $a1, $s0, 8 /* FE114 802D9764 00C52821 */ addu $a1, $a2, $a1 @@ -43,8 +43,8 @@ glabel SetSpriteShading /* FE148 802D9798 2652BB68 */ addiu $s2, $s2, %lo(D_802DBB68) /* FE14C 802D979C 0240302D */ daddu $a2, $s2, $zero /* FE150 802D97A0 8E220000 */ lw $v0, ($s1) -/* FE154 802D97A4 3C030031 */ lui $v1, 0x31 -/* FE158 802D97A8 24635D50 */ addiu $v1, $v1, 0x5d50 +/* FE154 802D97A4 3C030031 */ lui $v1, %hi(sprite_shading_profiles_ROM_START + 0x1D0) +/* FE158 802D97A8 24635D50 */ addiu $v1, $v1, %lo(sprite_shading_profiles_ROM_START + 0x1D0) /* FE15C 802D97AC 00431021 */ addu $v0, $v0, $v1 /* FE160 802D97B0 02028021 */ addu $s0, $s0, $v0 /* FE164 802D97B4 0200202D */ daddu $a0, $s0, $zero diff --git a/ver/us/asm/nonmatchings/msg/msg_copy_to_print_buffer.s b/ver/us/asm/nonmatchings/msg/msg_copy_to_print_buffer.s index 8b19a5ccc7..2b0f2ae193 100644 --- a/ver/us/asm/nonmatchings/msg/msg_copy_to_print_buffer.s +++ b/ver/us/asm/nonmatchings/msg/msg_copy_to_print_buffer.s @@ -664,8 +664,8 @@ glabel msg_copy_to_print_buffer /* BB59C 80124E9C 26730001 */ addiu $s3, $s3, 1 /* BB5A0 80124EA0 3C068016 */ lui $a2, %hi(D_80159B50) /* BB5A4 80124EA4 24C69B50 */ addiu $a2, $a2, %lo(D_80159B50) -/* BB5A8 80124EA8 3C11001D */ lui $s1, 0x1d -/* BB5AC 80124EAC 2631C310 */ addiu $s1, $s1, -0x3cf0 +/* BB5A8 80124EA8 3C11001D */ lui $s1, %hi(icon_present_ROM_START) +/* BB5AC 80124EAC 2631C310 */ addiu $s1, $s1, %lo(icon_present_ROM_START) /* BB5B0 80124EB0 3C018015 */ lui $at, %hi(D_8015131C) /* BB5B4 80124EB4 AC26131C */ sw $a2, %lo(D_8015131C)($at) /* BB5B8 80124EB8 00108200 */ sll $s0, $s0, 8 diff --git a/ver/us/asm/nonmatchings/world/area_hos/hos_05/A2AAC0/func_80243FC4_A2E204.s b/ver/us/asm/nonmatchings/world/area_hos/hos_05/A2AAC0/func_80243FC4_A2E204.s index 33a9a0cfb1..09d005a49e 100644 --- a/ver/us/asm/nonmatchings/world/area_hos/hos_05/A2AAC0/func_80243FC4_A2E204.s +++ b/ver/us/asm/nonmatchings/world/area_hos/hos_05/A2AAC0/func_80243FC4_A2E204.s @@ -50,8 +50,8 @@ glabel func_80243FC4_A2E204 /* A2E2B8 80244078 0080282D */ daddu $a1, $a0, $zero /* A2E2BC 8024407C 3C030002 */ lui $v1, 2 /* A2E2C0 80244080 3463A440 */ ori $v1, $v1, 0xa440 -/* A2E2C4 80244084 3C050022 */ lui $a1, 0x22 -/* A2E2C8 80244088 24A591B0 */ addiu $a1, $a1, -0x6e50 +/* A2E2C4 80244084 3C050022 */ lui $a1, %hi(title_bg_1_ROM_START) +/* A2E2C8 80244088 24A591B0 */ addiu $a1, $a1, %lo(title_bg_1_ROM_START) /* A2E2CC 8024408C 00A32021 */ addu $a0, $a1, $v1 /* A2E2D0 80244090 24A54000 */ addiu $a1, $a1, 0x4000 /* A2E2D4 80244094 8E020000 */ lw $v0, ($s0) diff --git a/ver/us/asm/shiftable/101b90_len_8f0/spr_init_player_raster_cache.s b/ver/us/asm/shiftable/101b90_len_8f0/spr_init_player_raster_cache.s new file mode 100644 index 0000000000..c935d039fb --- /dev/null +++ b/ver/us/asm/shiftable/101b90_len_8f0/spr_init_player_raster_cache.s @@ -0,0 +1,86 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel spr_init_player_raster_cache +/* 101E50 802DED60 27BDFFE0 */ addiu $sp, $sp, -0x20 +/* 101E54 802DED64 AFB10014 */ sw $s1, 0x14($sp) +/* 101E58 802DED68 0080882D */ daddu $s1, $a0, $zero +/* 101E5C 802DED6C AFB20018 */ sw $s2, 0x18($sp) +/* 101E60 802DED70 00A0902D */ daddu $s2, $a1, $zero +/* 101E64 802DED74 3C040194 */ lui $a0, %hi(_1943000_ROM_START + 0x10) +/* 101E68 802DED78 34843010 */ addiu $a0, $a0, %lo(_1943000_ROM_START + 0x10) +/* 101E6C 802DED7C AFB00010 */ sw $s0, 0x10($sp) +/* 101E70 802DED80 3C10802E */ lui $s0, %hi(SpriteDataHeader) +/* 101E74 802DED84 26100C60 */ addiu $s0, $s0, %lo(SpriteDataHeader) +/* 101E78 802DED88 0200282D */ daddu $a1, $s0, $zero +/* 101E7C 802DED8C AFBF001C */ sw $ra, 0x1c($sp) +/* 101E80 802DED90 0C017D24 */ jal nuPiReadRom +/* 101E84 802DED94 2406000C */ addiu $a2, $zero, 0xc +/* 101E88 802DED98 3C060194 */ lui $a2, %hi(_1943000_ROM_START + 0x10) +/* 101E8C 802DED9C 34C63010 */ addiu $a2, $a2, %lo(_1943000_ROM_START + 0x10) +/* 101E90 802DEDA0 3C048035 */ lui $a0, %hi(gSpriteHeapPtr) +/* 101E94 802DEDA4 2484F800 */ addiu $a0, $a0, %lo(gSpriteHeapPtr) +/* 101E98 802DEDA8 8E020000 */ lw $v0, ($s0) +/* 101E9C 802DEDAC 02510018 */ mult $s2, $s1 +/* 101EA0 802DEDB0 3C01802E */ lui $at, %hi(PlayerRasterCacheSize) +/* 101EA4 802DEDB4 AC310C58 */ sw $s1, %lo(PlayerRasterCacheSize)($at) +/* 101EA8 802DEDB8 3C11802E */ lui $s1, %hi(PlayerRasterMaxSize) +/* 101EAC 802DEDBC 26310C5C */ addiu $s1, $s1, %lo(PlayerRasterMaxSize) +/* 101EB0 802DEDC0 AE320000 */ sw $s2, ($s1) +/* 101EB4 802DEDC4 8E030008 */ lw $v1, 8($s0) +/* 101EB8 802DEDC8 00461021 */ addu $v0, $v0, $a2 +/* 101EBC 802DEDCC AE020000 */ sw $v0, ($s0) +/* 101EC0 802DEDD0 8E020004 */ lw $v0, 4($s0) +/* 101EC4 802DEDD4 00661821 */ addu $v1, $v1, $a2 +/* 101EC8 802DEDD8 AE030008 */ sw $v1, 8($s0) +/* 101ECC 802DEDDC 00461021 */ addu $v0, $v0, $a2 +/* 101ED0 802DEDE0 00002812 */ mflo $a1 +/* 101ED4 802DEDE4 0C00A41B */ jal _heap_malloc +/* 101ED8 802DEDE8 AE020004 */ sw $v0, 4($s0) +/* 101EDC 802DEDEC 0040282D */ daddu $a1, $v0, $zero +/* 101EE0 802DEDF0 0000202D */ daddu $a0, $zero, $zero +/* 101EE4 802DEDF4 240600FF */ addiu $a2, $zero, 0xff +/* 101EE8 802DEDF8 3C03802E */ lui $v1, %hi(PlayerRasterCache) +/* 101EEC 802DEDFC 24630C70 */ addiu $v1, $v1, %lo(PlayerRasterCache) +/* 101EF0 802DEE00 8E310000 */ lw $s1, ($s1) +.L802DEE04: +/* 101EF4 802DEE04 AC65000C */ sw $a1, 0xc($v1) +/* 101EF8 802DEE08 00B12821 */ addu $a1, $a1, $s1 +/* 101EFC 802DEE0C AC600000 */ sw $zero, ($v1) +/* 101F00 802DEE10 AC600004 */ sw $zero, 4($v1) +/* 101F04 802DEE14 AC660008 */ sw $a2, 8($v1) +/* 101F08 802DEE18 24840001 */ addiu $a0, $a0, 1 +/* 101F0C 802DEE1C 28820012 */ slti $v0, $a0, 0x12 +/* 101F10 802DEE20 1440FFF8 */ bnez $v0, .L802DEE04 +/* 101F14 802DEE24 24630010 */ addiu $v1, $v1, 0x10 +/* 101F18 802DEE28 2404000C */ addiu $a0, $zero, 0xc +/* 101F1C 802DEE2C 3C02802E */ lui $v0, %hi(PlayerRasterBufferSetOffsets+0x30) +/* 101F20 802DEE30 24420080 */ addiu $v0, $v0, %lo(PlayerRasterBufferSetOffsets+0x30) +.L802DEE34: +/* 101F24 802DEE34 AC400000 */ sw $zero, ($v0) +/* 101F28 802DEE38 2484FFFF */ addiu $a0, $a0, -1 +/* 101F2C 802DEE3C 0481FFFD */ bgez $a0, .L802DEE34 +/* 101F30 802DEE40 2442FFFC */ addiu $v0, $v0, -4 +/* 101F34 802DEE44 3C11802E */ lui $s1, %hi(PlayerRasterHeader) +/* 101F38 802DEE48 26310C10 */ addiu $s1, $s1, %lo(PlayerRasterHeader) +/* 101F3C 802DEE4C 0220282D */ daddu $a1, $s1, $zero +/* 101F40 802DEE50 3C10802E */ lui $s0, %hi(SpriteDataHeader) +/* 101F44 802DEE54 26100C60 */ addiu $s0, $s0, %lo(SpriteDataHeader) +/* 101F48 802DEE58 8E040000 */ lw $a0, ($s0) +/* 101F4C 802DEE5C 3C01802E */ lui $at, %hi(PlayerRasterSetsLoaded) +/* 101F50 802DEE60 AC20004C */ sw $zero, %lo(PlayerRasterSetsLoaded)($at) +/* 101F54 802DEE64 0C017D24 */ jal nuPiReadRom +/* 101F58 802DEE68 2406000C */ addiu $a2, $zero, 0xc +/* 101F5C 802DEE6C 3C05802E */ lui $a1, %hi(D_802E0C20) +/* 101F60 802DEE70 24A50C20 */ addiu $a1, $a1, %lo(D_802E0C20) +/* 101F64 802DEE74 8E020000 */ lw $v0, ($s0) +/* 101F68 802DEE78 8E240000 */ lw $a0, ($s1) +/* 101F6C 802DEE7C 24060038 */ addiu $a2, $zero, 0x38 +/* 101F70 802DEE80 0C017D24 */ jal nuPiReadRom +/* 101F74 802DEE84 00442021 */ addu $a0, $v0, $a0 +/* 101F78 802DEE88 8FBF001C */ lw $ra, 0x1c($sp) +/* 101F7C 802DEE8C 8FB20018 */ lw $s2, 0x18($sp) +/* 101F80 802DEE90 8FB10014 */ lw $s1, 0x14($sp) +/* 101F84 802DEE94 8FB00010 */ lw $s0, 0x10($sp) +/* 101F88 802DEE98 03E00008 */ jr $ra +/* 101F8C 802DEE9C 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/ver/us/asm/shiftable/audio/2e230_len_2190/au_engine_init.s b/ver/us/asm/shiftable/audio/2e230_len_2190/au_engine_init.s new file mode 100644 index 0000000000..1b53b3ccef --- /dev/null +++ b/ver/us/asm/shiftable/audio/2e230_len_2190/au_engine_init.s @@ -0,0 +1,306 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel au_engine_init +/* 2E25C 80052E5C 27BDFFB8 */ addiu $sp, $sp, -0x48 +/* 2E260 80052E60 AFB60040 */ sw $s6, 0x40($sp) +/* 2E264 80052E64 0080B02D */ daddu $s6, $a0, $zero +/* 2E268 80052E68 24050001 */ addiu $a1, $zero, 1 +/* 2E26C 80052E6C 3C028008 */ lui $v0, %hi(gSynDriverPtr) +/* 2E270 80052E70 8C428E54 */ lw $v0, %lo(gSynDriverPtr)($v0) +/* 2E274 80052E74 240619E0 */ addiu $a2, $zero, 0x19e0 +/* 2E278 80052E78 AFBF0044 */ sw $ra, 0x44($sp) +/* 2E27C 80052E7C AFB5003C */ sw $s5, 0x3c($sp) +/* 2E280 80052E80 AFB40038 */ sw $s4, 0x38($sp) +/* 2E284 80052E84 AFB30034 */ sw $s3, 0x34($sp) +/* 2E288 80052E88 AFB20030 */ sw $s2, 0x30($sp) +/* 2E28C 80052E8C AFB1002C */ sw $s1, 0x2c($sp) +/* 2E290 80052E90 AFB00028 */ sw $s0, 0x28($sp) +/* 2E294 80052E94 8C550018 */ lw $s5, 0x18($v0) +/* 2E298 80052E98 0000982D */ daddu $s3, $zero, $zero +/* 2E29C 80052E9C 0C015FE4 */ jal alHeapAlloc +/* 2E2A0 80052EA0 02A0202D */ daddu $a0, $s5, $zero +/* 2E2A4 80052EA4 02A0202D */ daddu $a0, $s5, $zero +/* 2E2A8 80052EA8 24050001 */ addiu $a1, $zero, 1 +/* 2E2AC 80052EAC 24060A9C */ addiu $a2, $zero, 0xa9c +/* 2E2B0 80052EB0 3C12800A */ lui $s2, %hi(gSoundGlobals) +/* 2E2B4 80052EB4 2652A5C0 */ addiu $s2, $s2, %lo(gSoundGlobals) +/* 2E2B8 80052EB8 0C015FE4 */ jal alHeapAlloc +/* 2E2BC 80052EBC AE420000 */ sw $v0, ($s2) +/* 2E2C0 80052EC0 02A0202D */ daddu $a0, $s5, $zero +/* 2E2C4 80052EC4 24050001 */ addiu $a1, $zero, 1 +/* 2E2C8 80052EC8 24060A9C */ addiu $a2, $zero, 0xa9c +/* 2E2CC 80052ECC 3C11800A */ lui $s1, %hi(gBGMPlayerA) +/* 2E2D0 80052ED0 2631A664 */ addiu $s1, $s1, %lo(gBGMPlayerA) +/* 2E2D4 80052ED4 0C015FE4 */ jal alHeapAlloc +/* 2E2D8 80052ED8 AE220000 */ sw $v0, ($s1) +/* 2E2DC 80052EDC 02A0202D */ daddu $a0, $s5, $zero +/* 2E2E0 80052EE0 24050001 */ addiu $a1, $zero, 1 +/* 2E2E4 80052EE4 3C01800A */ lui $at, %hi(gBGMPlayerB) +/* 2E2E8 80052EE8 AC22A5FC */ sw $v0, %lo(gBGMPlayerB)($at) +/* 2E2EC 80052EEC 0C015FE4 */ jal alHeapAlloc +/* 2E2F0 80052EF0 24060A9C */ addiu $a2, $zero, 0xa9c +/* 2E2F4 80052EF4 02A0202D */ daddu $a0, $s5, $zero +/* 2E2F8 80052EF8 24050001 */ addiu $a1, $zero, 1 +/* 2E2FC 80052EFC 3C01800A */ lui $at, %hi(gBGMPlayerC) +/* 2E300 80052F00 AC22A5CC */ sw $v0, %lo(gBGMPlayerC)($at) +/* 2E304 80052F04 0C015FE4 */ jal alHeapAlloc +/* 2E308 80052F08 240606CC */ addiu $a2, $zero, 0x6cc +/* 2E30C 80052F0C 02A0202D */ daddu $a0, $s5, $zero +/* 2E310 80052F10 24050001 */ addiu $a1, $zero, 1 +/* 2E314 80052F14 24060834 */ addiu $a2, $zero, 0x834 +/* 2E318 80052F18 3C10800A */ lui $s0, %hi(gSoundManager) +/* 2E31C 80052F1C 2610A640 */ addiu $s0, $s0, %lo(gSoundManager) +/* 2E320 80052F20 0C015FE4 */ jal alHeapAlloc +/* 2E324 80052F24 AE020000 */ sw $v0, ($s0) +/* 2E328 80052F28 02A0202D */ daddu $a0, $s5, $zero +/* 2E32C 80052F2C 24050001 */ addiu $a1, $zero, 1 +/* 2E330 80052F30 8E280000 */ lw $t0, ($s1) +/* 2E334 80052F34 8E070000 */ lw $a3, ($s0) +/* 2E338 80052F38 8E430000 */ lw $v1, ($s2) +/* 2E33C 80052F3C 34068000 */ ori $a2, $zero, 0x8000 +/* 2E340 80052F40 3C01800A */ lui $at, %hi(gAuAmbienceManager) +/* 2E344 80052F44 AC22A628 */ sw $v0, %lo(gAuAmbienceManager)($at) +/* 2E348 80052F48 0060A02D */ daddu $s4, $v1, $zero +/* 2E34C 80052F4C AD070004 */ sw $a3, 4($t0) +/* 2E350 80052F50 0C015FE4 */ jal alHeapAlloc +/* 2E354 80052F54 AC430000 */ sw $v1, ($v0) +/* 2E358 80052F58 0280802D */ daddu $s0, $s4, $zero +/* 2E35C 80052F5C 24435000 */ addiu $v1, $v0, 0x5000 +/* 2E360 80052F60 AE82005C */ sw $v0, 0x5c($s4) +/* 2E364 80052F64 24427000 */ addiu $v0, $v0, 0x7000 +/* 2E368 80052F68 AE830060 */ sw $v1, 0x60($s4) +/* 2E36C 80052F6C AE820064 */ sw $v0, 0x64($s4) +/* 2E370 80052F70 AE830068 */ sw $v1, 0x68($s4) +.L80052F74: +/* 2E374 80052F74 02A0202D */ daddu $a0, $s5, $zero +/* 2E378 80052F78 24050001 */ addiu $a1, $zero, 1 +/* 2E37C 80052F7C 0C015FE4 */ jal alHeapAlloc +/* 2E380 80052F80 24060A9C */ addiu $a2, $zero, 0xa9c +/* 2E384 80052F84 AE02006C */ sw $v0, 0x6c($s0) +/* 2E388 80052F88 26730001 */ addiu $s3, $s3, 1 +/* 2E38C 80052F8C 1260FFF9 */ beqz $s3, .L80052F74 +/* 2E390 80052F90 26100008 */ addiu $s0, $s0, 8 +/* 2E394 80052F94 02A0202D */ daddu $a0, $s5, $zero +/* 2E398 80052F98 24050001 */ addiu $a1, $zero, 1 +/* 2E39C 80052F9C 0C015FE4 */ jal alHeapAlloc +/* 2E3A0 80052FA0 24065200 */ addiu $a2, $zero, 0x5200 +/* 2E3A4 80052FA4 02A0202D */ daddu $a0, $s5, $zero +/* 2E3A8 80052FA8 24050001 */ addiu $a1, $zero, 1 +/* 2E3AC 80052FAC 24060030 */ addiu $a2, $zero, 0x30 +/* 2E3B0 80052FB0 0C015FE4 */ jal alHeapAlloc +/* 2E3B4 80052FB4 AE8200A0 */ sw $v0, 0xa0($s4) +/* 2E3B8 80052FB8 02A0202D */ daddu $a0, $s5, $zero +/* 2E3BC 80052FBC 24050001 */ addiu $a1, $zero, 1 +/* 2E3C0 80052FC0 24060360 */ addiu $a2, $zero, 0x360 +/* 2E3C4 80052FC4 0C015FE4 */ jal alHeapAlloc +/* 2E3C8 80052FC8 AE820004 */ sw $v0, 4($s4) +/* 2E3CC 80052FCC 02A0202D */ daddu $a0, $s5, $zero +/* 2E3D0 80052FD0 24050001 */ addiu $a1, $zero, 1 +/* 2E3D4 80052FD4 24060200 */ addiu $a2, $zero, 0x200 +/* 2E3D8 80052FD8 0C015FE4 */ jal alHeapAlloc +/* 2E3DC 80052FDC AE820054 */ sw $v0, 0x54($s4) +/* 2E3E0 80052FE0 02A0202D */ daddu $a0, $s5, $zero +/* 2E3E4 80052FE4 24050001 */ addiu $a1, $zero, 1 +/* 2E3E8 80052FE8 24060040 */ addiu $a2, $zero, 0x40 +/* 2E3EC 80052FEC 0C015FE4 */ jal alHeapAlloc +/* 2E3F0 80052FF0 AE820058 */ sw $v0, 0x58($s4) +/* 2E3F4 80052FF4 0000982D */ daddu $s3, $zero, $zero +/* 2E3F8 80052FF8 8E840004 */ lw $a0, 4($s4) +/* 2E3FC 80052FFC 44960000 */ mtc1 $s6, $f0 +/* 2E400 80053000 00000000 */ nop +/* 2E404 80053004 46800020 */ cvt.s.w $f0, $f0 +/* 2E408 80053008 AE820094 */ sw $v0, 0x94($s4) +/* 2E40C 8005300C 0C014CBD */ jal au_reset_instrument +/* 2E410 80053010 E6800000 */ swc1 $f0, ($s4) +/* 2E414 80053014 0C014CDC */ jal au_reset_drum_entry +/* 2E418 80053018 26840008 */ addiu $a0, $s4, 8 +/* 2E41C 8005301C 0C014CEA */ jal au_reset_instrument_entry +/* 2E420 80053020 26840014 */ addiu $a0, $s4, 0x14 +/* 2E424 80053024 0C015843 */ jal bgm_clear_music_events +/* 2E428 80053028 00000000 */ nop +/* 2E42C 8005302C 0280102D */ daddu $v0, $s4, $zero +/* 2E430 80053030 AE8000A4 */ sw $zero, 0xa4($s4) +/* 2E434 80053034 AE8000A8 */ sw $zero, 0xa8($s4) +.L80053038: +/* 2E438 80053038 A0400070 */ sb $zero, 0x70($v0) +/* 2E43C 8005303C A0400071 */ sb $zero, 0x71($v0) +/* 2E440 80053040 26730001 */ addiu $s3, $s3, 1 +/* 2E444 80053044 1260FFFC */ beqz $s3, .L80053038 +/* 2E448 80053048 24420008 */ addiu $v0, $v0, 8 +/* 2E44C 8005304C 0000982D */ daddu $s3, $zero, $zero +/* 2E450 80053050 0280182D */ daddu $v1, $s4, $zero +.L80053054: +/* 2E454 80053054 A0600040 */ sb $zero, 0x40($v1) +/* 2E458 80053058 A0600041 */ sb $zero, 0x41($v1) +/* 2E45C 8005305C 26730001 */ addiu $s3, $s3, 1 +/* 2E460 80053060 2E620004 */ sltiu $v0, $s3, 4 +/* 2E464 80053064 1440FFFB */ bnez $v0, .L80053054 +/* 2E468 80053068 24630004 */ addiu $v1, $v1, 4 +/* 2E46C 8005306C 0000982D */ daddu $s3, $zero, $zero +/* 2E470 80053070 2416FFFF */ addiu $s6, $zero, -1 +/* 2E474 80053074 241200FF */ addiu $s2, $zero, 0xff +/* 2E478 80053078 24111320 */ addiu $s1, $zero, 0x1320 +.L8005307C: +/* 2E47C 8005307C 327000FF */ andi $s0, $s3, 0xff +/* 2E480 80053080 0200202D */ daddu $a0, $s0, $zero +/* 2E484 80053084 0C015BB0 */ jal func_80056EC0 +/* 2E488 80053088 0000282D */ daddu $a1, $zero, $zero +/* 2E48C 8005308C 0200202D */ daddu $a0, $s0, $zero +/* 2E490 80053090 8E850004 */ lw $a1, 4($s4) +/* 2E494 80053094 0C015C89 */ jal au_pvoice_set_filter_wavetable +/* 2E498 80053098 26730001 */ addiu $s3, $s3, 1 +/* 2E49C 8005309C 02911021 */ addu $v0, $s4, $s1 +/* 2E4A0 800530A0 AC400000 */ sw $zero, ($v0) +/* 2E4A4 800530A4 AC400004 */ sw $zero, 4($v0) +/* 2E4A8 800530A8 A456000C */ sh $s6, 0xc($v0) +/* 2E4AC 800530AC A052000E */ sb $s2, 0xe($v0) +/* 2E4B0 800530B0 A052000F */ sb $s2, 0xf($v0) +/* 2E4B4 800530B4 A0400010 */ sb $zero, 0x10($v0) +/* 2E4B8 800530B8 A0400042 */ sb $zero, 0x42($v0) +/* 2E4BC 800530BC A0400043 */ sb $zero, 0x43($v0) +/* 2E4C0 800530C0 A0400044 */ sh $zero, 0x44($v0) +/* 2E4C4 800530C4 A0400045 */ lui $a1, %hi(SBN_ROM_START) +/* 2E4C8 800530C8 2E620018 */ sltiu $v0, $s3, 0x18 +/* 2E4CC 800530CC 1440FFEB */ bnez $v0, .L8005307C +/* 2E4D0 800530D0 26310048 */ addiu $s1, $s1, 0x48 +/* 2E4D4 800530D4 0280202D */ daddu $a0, $s4, $zero +/* 2E4D8 800530D8 3C0500F0 */ addiu $a1, %lo(SBN_ROM_START) +/* 2E4DC 800530DC 0C0150AF */ jal au_load_INIT +/* 2E4E0 800530E0 02A0302D */ daddu $a2, $s5, $zero +/* 2E4E4 800530E4 0000982D */ daddu $s3, $zero, $zero +/* 2E4E8 800530E8 0280802D */ daddu $s0, $s4, $zero +.L800530EC: +/* 2E4EC 800530EC 02A0202D */ daddu $a0, $s5, $zero +/* 2E4F0 800530F0 24050001 */ addiu $a1, $zero, 1 +/* 2E4F4 800530F4 0C015FE4 */ jal alHeapAlloc +/* 2E4F8 800530F8 24060840 */ addiu $a2, $zero, 0x840 +/* 2E4FC 800530FC AE021310 */ sw $v0, 0x1310($s0) +/* 2E500 80053100 26730001 */ addiu $s3, $s3, 1 +/* 2E504 80053104 2E620003 */ sltiu $v0, $s3, 3 +/* 2E508 80053108 1440FFF8 */ bnez $v0, .L800530EC +/* 2E50C 8005310C 26100004 */ addiu $s0, $s0, 4 +/* 2E510 80053110 24050001 */ addiu $a1, $zero, 1 +/* 2E514 80053114 0000302D */ daddu $a2, $zero, $zero +/* 2E518 80053118 3C10800A */ lui $s0, %hi(gBGMPlayerA) +/* 2E51C 8005311C 2610A664 */ addiu $s0, $s0, %lo(gBGMPlayerA) +/* 2E520 80053120 8E040000 */ lw $a0, ($s0) +/* 2E524 80053124 0C013856 */ jal au_bgm_player_init +/* 2E528 80053128 0280382D */ daddu $a3, $s4, $zero +/* 2E52C 8005312C 27B20020 */ addiu $s2, $sp, 0x20 +/* 2E530 80053130 0240282D */ daddu $a1, $s2, $zero +/* 2E534 80053134 24020003 */ addiu $v0, $zero, 3 +/* 2E538 80053138 8E040000 */ lw $a0, ($s0) +/* 2E53C 8005313C 241000FF */ addiu $s0, $zero, 0xff +/* 2E540 80053140 A3A00020 */ sb $zero, 0x20($sp) +/* 2E544 80053144 A3A20021 */ sb $v0, 0x21($sp) +/* 2E548 80053148 A3B00022 */ sb $s0, 0x22($sp) +/* 2E54C 8005314C 0C0138D1 */ jal au_bgm_set_effect_indices +/* 2E550 80053150 A3B00023 */ sb $s0, 0x23($sp) +/* 2E554 80053154 24050002 */ addiu $a1, $zero, 2 +/* 2E558 80053158 00A0302D */ daddu $a2, $a1, $zero +/* 2E55C 8005315C 3C11800A */ lui $s1, %hi(gBGMPlayerB) +/* 2E560 80053160 2631A5FC */ addiu $s1, $s1, %lo(gBGMPlayerB) +/* 2E564 80053164 8E240000 */ lw $a0, ($s1) +/* 2E568 80053168 0C013856 */ jal au_bgm_player_init +/* 2E56C 8005316C 0280382D */ daddu $a3, $s4, $zero +/* 2E570 80053170 0240282D */ daddu $a1, $s2, $zero +/* 2E574 80053174 8E240000 */ lw $a0, ($s1) +/* 2E578 80053178 24020002 */ addiu $v0, $zero, 2 +/* 2E57C 8005317C A3A20020 */ sb $v0, 0x20($sp) +/* 2E580 80053180 A3B00021 */ sb $s0, 0x21($sp) +/* 2E584 80053184 A3B00022 */ sb $s0, 0x22($sp) +/* 2E588 80053188 0C0138D1 */ jal au_bgm_set_effect_indices +/* 2E58C 8005318C A3B00023 */ sb $s0, 0x23($sp) +/* 2E590 80053190 24050004 */ addiu $a1, $zero, 4 +/* 2E594 80053194 24060001 */ addiu $a2, $zero, 1 +/* 2E598 80053198 0280382D */ daddu $a3, $s4, $zero +/* 2E59C 8005319C 3C10800A */ lui $s0, %hi(gSoundManager) +/* 2E5A0 800531A0 2610A640 */ addiu $s0, $s0, %lo(gSoundManager) +/* 2E5A4 800531A4 8E040000 */ lw $a0, ($s0) +/* 2E5A8 800531A8 24020010 */ addiu $v0, $zero, 0x10 +/* 2E5AC 800531AC 0C012D10 */ jal au_sfx_init +/* 2E5B0 800531B0 AFA20010 */ sw $v0, 0x10($sp) +/* 2E5B4 800531B4 24050006 */ addiu $a1, $zero, 6 +/* 2E5B8 800531B8 24060001 */ addiu $a2, $zero, 1 +/* 2E5BC 800531BC 3C04800A */ lui $a0, %hi(gAuAmbienceManager) +/* 2E5C0 800531C0 8C84A628 */ lw $a0, %lo(gAuAmbienceManager)($a0) +/* 2E5C4 800531C4 0C0142E4 */ jal au_mseq_manager_init +/* 2E5C8 800531C8 0280382D */ daddu $a3, $s4, $zero +/* 2E5CC 800531CC 0C014985 */ jal func_80052614 +/* 2E5D0 800531D0 0280202D */ daddu $a0, $s4, $zero +/* 2E5D4 800531D4 0280202D */ daddu $a0, $s4, $zero +/* 2E5D8 800531D8 0C0153F0 */ jal au_load_BK_headers +/* 2E5DC 800531DC 02A0282D */ daddu $a1, $s5, $zero +/* 2E5E0 800531E0 8E82003C */ lw $v0, 0x3c($s4) +/* 2E5E4 800531E4 24050020 */ addiu $a1, $zero, 0x20 +/* 2E5E8 800531E8 94440000 */ lhu $a0, ($v0) +/* 2E5EC 800531EC 0C01511F */ jal au_fetch_SBN_file +/* 2E5F0 800531F0 27A60018 */ addiu $a2, $sp, 0x18 +/* 2E5F4 800531F4 14400007 */ bnez $v0, .L80053214 +/* 2E5F8 800531F8 3C0200FF */ lui $v0, 0xff +/* 2E5FC 800531FC 3442FFFF */ ori $v0, $v0, 0xffff +/* 2E600 80053200 8FA40018 */ lw $a0, 0x18($sp) +/* 2E604 80053204 8FA6001C */ lw $a2, 0x1c($sp) +/* 2E608 80053208 8E8500A0 */ lw $a1, 0xa0($s4) +/* 2E60C 8005320C 0C015380 */ jal au_read_rom +/* 2E610 80053210 00C23024 */ and $a2, $a2, $v0 +.L80053214: +/* 2E614 80053214 8E040000 */ lw $a0, ($s0) +/* 2E618 80053218 0C012D8B */ jal au_sfx_load_groups_from_SEF +/* 2E61C 8005321C 00000000 */ nop +/* 2E620 80053220 8E82003C */ lw $v0, 0x3c($s4) +/* 2E624 80053224 24050040 */ addiu $a1, $zero, 0x40 +/* 2E628 80053228 94440002 */ lhu $a0, 2($v0) +/* 2E62C 8005322C 0C01511F */ jal au_fetch_SBN_file +/* 2E630 80053230 27A60018 */ addiu $a2, $sp, 0x18 +/* 2E634 80053234 14400004 */ bnez $v0, .L80053248 +/* 2E638 80053238 00000000 */ nop +/* 2E63C 8005323C 8FA50018 */ lw $a1, 0x18($sp) +/* 2E640 80053240 0C01513E */ jal au_load_PER +/* 2E644 80053244 0280202D */ daddu $a0, $s4, $zero +.L80053248: +/* 2E648 80053248 8E82003C */ lw $v0, 0x3c($s4) +/* 2E64C 8005324C 24050040 */ addiu $a1, $zero, 0x40 +/* 2E650 80053250 94440004 */ lhu $a0, 4($v0) +/* 2E654 80053254 0C01511F */ jal au_fetch_SBN_file +/* 2E658 80053258 27A60018 */ addiu $a2, $sp, 0x18 +/* 2E65C 8005325C 54400005 */ bnel $v0, $zero, .L80053274 +/* 2E660 80053260 0000202D */ daddu $a0, $zero, $zero +/* 2E664 80053264 8FA50018 */ lw $a1, 0x18($sp) +/* 2E668 80053268 0C01516D */ jal au_load_PRG +/* 2E66C 8005326C 0280202D */ daddu $a0, $s4, $zero +/* 2E670 80053270 0000202D */ daddu $a0, $zero, $zero +.L80053274: +/* 2E674 80053274 268304EC */ addiu $v1, $s4, 0x4ec +/* 2E678 80053278 268205EC */ addiu $v0, $s4, 0x5ec +/* 2E67C 8005327C AE8212F0 */ sw $v0, 0x12f0($s4) +/* 2E680 80053280 268200AC */ addiu $v0, $s4, 0xac +/* 2E684 80053284 AE8212F4 */ sw $v0, 0x12f4($s4) +/* 2E688 80053288 268200EC */ addiu $v0, $s4, 0xec +/* 2E68C 8005328C AE8212F8 */ sw $v0, 0x12f8($s4) +/* 2E690 80053290 268209EC */ addiu $v0, $s4, 0x9ec +/* 2E694 80053294 AE8212FC */ sw $v0, 0x12fc($s4) +/* 2E698 80053298 26820DEC */ addiu $v0, $s4, 0xdec +/* 2E69C 8005329C AE821300 */ sw $v0, 0x1300($s4) +/* 2E6A0 800532A0 268211EC */ addiu $v0, $s4, 0x11ec +/* 2E6A4 800532A4 AE8312EC */ sw $v1, 0x12ec($s4) +/* 2E6A8 800532A8 AE821304 */ sw $v0, 0x1304($s4) +/* 2E6AC 800532AC AE831308 */ sw $v1, 0x1308($s4) +/* 2E6B0 800532B0 A2800053 */ sb $zero, 0x53($s4) +/* 2E6B4 800532B4 A2800052 */ sb $zero, 0x52($s4) +/* 2E6B8 800532B8 A2800051 */ sb $zero, 0x51($s4) +/* 2E6BC 800532BC 0C015FB4 */ jal func_80057ED0 +/* 2E6C0 800532C0 A2800050 */ sb $zero, 0x50($s4) +/* 2E6C4 800532C4 0C015414 */ jal func_80055050 +/* 2E6C8 800532C8 02A0202D */ daddu $a0, $s5, $zero +/* 2E6CC 800532CC 8FBF0044 */ lw $ra, 0x44($sp) +/* 2E6D0 800532D0 8FB60040 */ lw $s6, 0x40($sp) +/* 2E6D4 800532D4 8FB5003C */ lw $s5, 0x3c($sp) +/* 2E6D8 800532D8 8FB40038 */ lw $s4, 0x38($sp) +/* 2E6DC 800532DC 8FB30034 */ lw $s3, 0x34($sp) +/* 2E6E0 800532E0 8FB20030 */ lw $s2, 0x30($sp) +/* 2E6E4 800532E4 8FB1002C */ lw $s1, 0x2c($sp) +/* 2E6E8 800532E8 8FB00028 */ lw $s0, 0x28($sp) +/* 2E6EC 800532EC 03E00008 */ jr $ra +/* 2E6F0 800532F0 27BD0048 */ addiu $sp, $sp, 0x48 diff --git a/ver/us/asm/shiftable/msg/dma_load_msg.s b/ver/us/asm/shiftable/msg/dma_load_msg.s new file mode 100644 index 0000000000..a192a4bfd0 --- /dev/null +++ b/ver/us/asm/shiftable/msg/dma_load_msg.s @@ -0,0 +1,38 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel dma_load_msg + addiu $sp,$sp,-40 + sw $s0,24($sp) + move $s0,$a0 + sw $s2,32($sp) + move $s2,$a1 + sw $s1,28($sp) + lui $s1,%hi(msg_ROM_START) + addiu $s1,$s1,%lo(msg_ROM_START) + srl $v0,$s0,0xe + addu $a0,$v0,$s1 + addiu $a1,$a0,4 + sw $ra,36($sp) + jal dma_copy + addiu $a2,$sp,16 + addiu $a2,$sp,16 + andi $s0,$s0,0xffff + sll $s0,$s0,0x2 + lw $v0,16($sp) + addu $s0,$s0,$s1 + addu $a0,$v0,$s0 + jal dma_copy + addiu $a1,$a0,8 + move $a2,$s2 + lw $a0,16($sp) + lw $a1,20($sp) + addu $a0,$a0,$s1 + jal dma_copy + addu $a1,$a1,$s1 + lw $ra,36($sp) + lw $s2,32($sp) + lw $s1,28($sp) + lw $s0,24($sp) + jr $ra + addiu $sp,$sp,40 diff --git a/ver/us/asm/shiftable/world/world/get_asset_offset.s b/ver/us/asm/shiftable/world/world/get_asset_offset.s new file mode 100644 index 0000000000..c133e80a2b --- /dev/null +++ b/ver/us/asm/shiftable/world/world/get_asset_offset.s @@ -0,0 +1,58 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel get_asset_offset +/* 361D0 8005ADD0 27BDFFB8 */ addiu $sp, $sp, -0x48 +/* 361D4 8005ADD4 AFB20038 */ sw $s2, 0x38($sp) +/* 361D8 8005ADD8 0080902D */ daddu $s2, $a0, $zero +/* 361DC 8005ADDC AFB3003C */ sw $s3, 0x3c($sp) +/* 361E0 8005ADE0 00A0982D */ daddu $s3, $a1, $zero +/* 361E4 8005ADE4 3C0401E4 */ lui $a0, %hi(mapfs_ROM_START + 0x20) +/* 361E8 8005ADE8 34840020 */ addiu $a0, $a0, %lo(mapfs_ROM_START + 0x20) +/* 361EC 8005ADEC 3C0501E4 */ lui $a1, %hi(mapfs_ROM_START + 0x3C) +/* 361F0 8005ADF0 34A5003C */ addiu $a1, $a1, %lo(mapfs_ROM_START + 0x3C) +/* 361F4 8005ADF4 27A60010 */ addiu $a2, $sp, 0x10 +/* 361F8 8005ADF8 AFBF0040 */ sw $ra, 0x40($sp) +/* 361FC 8005ADFC AFB10034 */ sw $s1, 0x34($sp) +/* 36200 8005AE00 0C00A5CF */ jal dma_copy +/* 36204 8005AE04 AFB00030 */ sw $s0, 0x30($sp) +/* 36208 8005AE08 8FA40020 */ lw $a0, 0x20($sp) +/* 3620C 8005AE0C 0C00AB39 */ jal heap_malloc +/* 36210 8005AE10 00000000 */ nop +/* 36214 8005AE14 0040882D */ daddu $s1, $v0, $zero +/* 36218 8005AE18 0220802D */ daddu $s0, $s1, $zero +/* 3621C 8005AE1C 3C0201E4 */ lui $v0, %hi(mapfs_ROM_START + 0x20) +/* 36220 8005AE20 34420020 */ addiu $v0, $v0, %lo(mapfs_ROM_START + 0x20) +/* 36224 8005AE24 3C0401E4 */ lui $a0, %hi(mapfs_ROM_START + 0x20) +/* 36228 8005AE28 34840020 */ addiu $a0, $a0, %lo(mapfs_ROM_START + 0x20) +/* 3622C 8005AE2C 8FA50020 */ lw $a1, 0x20($sp) +/* 36230 8005AE30 0220302D */ daddu $a2, $s1, $zero +/* 36234 8005AE34 0C00A5CF */ jal dma_copy +/* 36238 8005AE38 00A22821 */ addu $a1, $a1, $v0 +.L8005AE3C: +/* 3623C 8005AE3C 0200202D */ daddu $a0, $s0, $zero +/* 36240 8005AE40 0C01BB5C */ jal strcmp +/* 36244 8005AE44 0240282D */ daddu $a1, $s2, $zero +/* 36248 8005AE48 10400003 */ beqz $v0, .L8005AE58 +/* 3624C 8005AE4C 3C0301E4 */ lui $v1, %hi(mapfs_ROM_START + 0x20) +/* 36250 8005AE50 08016B8F */ j .L8005AE3C +/* 36254 8005AE54 2610001C */ addiu $s0, $s0, 0x1c +.L8005AE58: +/* 36258 8005AE58 8E020014 */ lw $v0, 0x14($s0) +/* 3625C 8005AE5C 34630020 */ addiu $v1, $v1, %lo(mapfs_ROM_START + 0x20) +/* 36260 8005AE60 AE620000 */ sw $v0, ($s3) +/* 36264 8005AE64 8E100010 */ lw $s0, 0x10($s0) +/* 36268 8005AE68 0220202D */ daddu $a0, $s1, $zero +/* 3626C 8005AE6C 0C00AB4B */ jal heap_free +/* 36270 8005AE70 02038021 */ addu $s0, $s0, $v1 +/* 36274 8005AE74 0200102D */ daddu $v0, $s0, $zero +/* 36278 8005AE78 8FBF0040 */ lw $ra, 0x40($sp) +/* 3627C 8005AE7C 8FB3003C */ lw $s3, 0x3c($sp) +/* 36280 8005AE80 8FB20038 */ lw $s2, 0x38($sp) +/* 36284 8005AE84 8FB10034 */ lw $s1, 0x34($sp) +/* 36288 8005AE88 8FB00030 */ lw $s0, 0x30($sp) +/* 3628C 8005AE8C 03E00008 */ jr $ra +/* 36290 8005AE90 27BD0048 */ addiu $sp, $sp, 0x48 +/* 36294 8005AE94 00000000 */ nop +/* 36298 8005AE98 00000000 */ nop +/* 3629C 8005AE9C 00000000 */ nop diff --git a/ver/us/asm/shiftable/world/world/load_asset_by_name.s b/ver/us/asm/shiftable/world/world/load_asset_by_name.s new file mode 100644 index 0000000000..72be5a45ad --- /dev/null +++ b/ver/us/asm/shiftable/world/world/load_asset_by_name.s @@ -0,0 +1,64 @@ +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches + +glabel load_asset_by_name +/* 360E8 8005ACE8 27BDFFB8 */ addiu $sp, $sp, -0x48 +/* 360EC 8005ACEC AFB00030 */ sw $s0, 0x30($sp) +/* 360F0 8005ACF0 0080802D */ daddu $s0, $a0, $zero +/* 360F4 8005ACF4 AFB3003C */ sw $s3, 0x3c($sp) +/* 360F8 8005ACF8 00A0982D */ daddu $s3, $a1, $zero +/* 360FC 8005ACFC 3C0401E4 */ lui $a0, %hi(mapfs_ROM_START + 0x20) +/* 36100 8005AD00 34840020 */ addiu $a0, $a0, %lo(mapfs_ROM_START + 0x20) +/* 36104 8005AD04 3C0501E4 */ lui $a1, %hi(mapfs_ROM_START + 0x3C) +/* 36108 8005AD08 34A5003C */ addiu $a1, $a1, %lo(mapfs_ROM_START + 0x3C) +/* 3610C 8005AD0C 27A60010 */ addiu $a2, $sp, 0x10 +/* 36110 8005AD10 AFBF0040 */ sw $ra, 0x40($sp) +/* 36114 8005AD14 AFB20038 */ sw $s2, 0x38($sp) +/* 36118 8005AD18 0C00A5CF */ jal dma_copy +/* 3611C 8005AD1C AFB10034 */ sw $s1, 0x34($sp) +/* 36120 8005AD20 8FA40020 */ lw $a0, 0x20($sp) +/* 36124 8005AD24 0C00AB39 */ jal heap_malloc +/* 36128 8005AD28 00000000 */ nop +/* 3612C 8005AD2C 0040902D */ daddu $s2, $v0, $zero +/* 36130 8005AD30 0240882D */ daddu $s1, $s2, $zero +/* 36134 8005AD34 3C0201E4 */ lui $v0, %hi(mapfs_ROM_START + 0x20) +/* 36138 8005AD38 34420020 */ addiu $v0, $v0, %lo(mapfs_ROM_START + 0x20) +/* 3613C 8005AD3C 3C0401E4 */ lui $a0, %hi(mapfs_ROM_START + 0x20) +/* 36140 8005AD40 34840020 */ addiu $a0, $a0, %lo(mapfs_ROM_START + 0x20) +/* 36144 8005AD44 8FA50020 */ lw $a1, 0x20($sp) +/* 36148 8005AD48 0240302D */ daddu $a2, $s2, $zero +/* 3614C 8005AD4C 0C00A5CF */ jal dma_copy +/* 36150 8005AD50 00A22821 */ addu $a1, $a1, $v0 +.L8005AD54: +/* 36154 8005AD54 0220202D */ daddu $a0, $s1, $zero +/* 36158 8005AD58 0C01BB5C */ jal strcmp +/* 3615C 8005AD5C 0200282D */ daddu $a1, $s0, $zero +/* 36160 8005AD60 10400003 */ beqz $v0, .L8005AD70 +/* 36164 8005AD64 00000000 */ nop +/* 36168 8005AD68 08016B55 */ j .L8005AD54 +/* 3616C 8005AD6C 2631001C */ addiu $s1, $s1, 0x1c +.L8005AD70: +/* 36170 8005AD70 8E220018 */ lw $v0, 0x18($s1) +/* 36174 8005AD74 AE620000 */ sw $v0, ($s3) +/* 36178 8005AD78 0C00AB0A */ jal general_heap_malloc +/* 3617C 8005AD7C 8E240014 */ lw $a0, 0x14($s1) +/* 36180 8005AD80 3C0301E4 */ lui $v1, %hi(mapfs_ROM_START + 0x20) +/* 36184 8005AD84 34630020 */ addiu $v1, $v1, %lo(mapfs_ROM_START + 0x20) +/* 36188 8005AD88 0040802D */ daddu $s0, $v0, $zero +/* 3618C 8005AD8C 0040302D */ daddu $a2, $v0, $zero +/* 36190 8005AD90 8E220010 */ lw $v0, 0x10($s1) +/* 36194 8005AD94 8E250014 */ lw $a1, 0x14($s1) +/* 36198 8005AD98 00432021 */ addu $a0, $v0, $v1 +/* 3619C 8005AD9C 00A32821 */ addu $a1, $a1, $v1 +/* 361A0 8005ADA0 0C00A5CF */ jal dma_copy +/* 361A4 8005ADA4 00452821 */ addu $a1, $v0, $a1 +/* 361A8 8005ADA8 0C00AB4B */ jal heap_free +/* 361AC 8005ADAC 0240202D */ daddu $a0, $s2, $zero +/* 361B0 8005ADB0 0200102D */ daddu $v0, $s0, $zero +/* 361B4 8005ADB4 8FBF0040 */ lw $ra, 0x40($sp) +/* 361B8 8005ADB8 8FB3003C */ lw $s3, 0x3c($sp) +/* 361BC 8005ADBC 8FB20038 */ lw $s2, 0x38($sp) +/* 361C0 8005ADC0 8FB10034 */ lw $s1, 0x34($sp) +/* 361C4 8005ADC4 8FB00030 */ lw $s0, 0x30($sp) +/* 361C8 8005ADC8 03E00008 */ jr $ra +/* 361CC 8005ADCC 27BD0048 */ addiu $sp, $sp, 0x48 diff --git a/ver/us/undefined_syms.txt b/ver/us/undefined_syms.txt index d43b3ac8a5..c08d21a094 100644 --- a/ver/us/undefined_syms.txt +++ b/ver/us/undefined_syms.txt @@ -3,8 +3,8 @@ obfuscated_battle_heap_create = battle_heap_create - 0xFEFFFFF; obfuscated_general_heap_create = general_heap_create - 0xFEFEFEF; obfuscated_load_engine_data = load_engine_data - 0x315; obfuscated_create_audio_system = create_audio_system - 0x7B; -D_7599F6D8 = 0x7599F6D8; -D_F79DDD0F = 0xF79DDD0F; +D_7599F6D8 = _316F30_VRAM - 0xA912928; +D_F79DDD0F = _316F30_ROM_START - 0x8939221; // effect_flame D_000B32E0 = 0x000B32E0; // todo look into