Big steps toward ROM shiftability (#912)

* shiftability work

* Cleanup

* fix build

* Fix sprite shading profile when shifted

* fix overworld items icons, message icons, and corrupted bowser graphics on the title screen

* add shift flag to configure.py

* restoring ifdef stuff

Co-authored-by: Ethan Roseman <ethteck@gmail.com>
This commit is contained in:
pixel-stuck 2023-01-16 18:03:23 -05:00 committed by GitHub
parent 935fd14530
commit ddebe5eb64
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 602 additions and 16 deletions

View File

@ -6,18 +6,20 @@
#if !defined(SPLAT) && !defined(__CTX__) && !defined(PERMUTER) #if !defined(SPLAT) && !defined(__CTX__) && !defined(PERMUTER)
#ifndef INCLUDE_ASM #ifndef INCLUDE_ASM
#define INCLUDE_ASM(TYPE, FOLDER, NAME, ARGS...) \ #define INCLUDE_ASM_INTERNAL(TYPE, BASE_FOLDER, FOLDER, NAME, ARGS...) \
__asm__( \ __asm__( \
".section .text\n" \ ".section .text\n" \
"\t.align\t2\n" \ "\t.align\t2\n" \
"\t.globl\t"#NAME"\n" \ "\t.globl\t"#NAME"\n" \
"\t.ent\t"#NAME"\n" \ "\t.ent\t"#NAME"\n" \
#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 reorder\n" \
"\t.set at\n" \ "\t.set at\n" \
"\t.end\t"#NAME \ "\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 #endif
__asm__(".include \"include/macro.inc\"\n"); __asm__(".include \"include/macro.inc\"\n");
#else #else

View File

@ -146,6 +146,7 @@ SpriteAnimData* spr_load_sprite(s32 idx, s32 isPlayerSprite, s32 useTailAlloc) {
return animData; return animData;
} }
#ifndef SHIFT
void spr_init_player_raster_cache(s32 cacheSize, s32 maxRasterSize) { void spr_init_player_raster_cache(s32 cacheSize, s32 maxRasterSize) {
void* raster; void* raster;
s32 i; 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, sizeof(PlayerRasterHeader));
nuPiReadRom(SpriteDataHeader[0] + PlayerRasterHeader[0], D_802E0C20, sizeof(D_802E0C20)); 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) { IMG_PTR spr_get_player_raster(s32 rasterIndex, s32 playerSpriteID) {
PlayerSpriteCacheEntry* temp_s0; PlayerSpriteCacheEntry* temp_s0;

View File

@ -7,7 +7,7 @@
#include "effects.h" #include "effects.h"
#include "nu/nusys.h" #include "nu/nusys.h"
#ifdef SHIFT #ifdef SHIFT_VRAM
#define AREA_SPECIFIC_ENTITY_VRAM entity_default_VRAM #define AREA_SPECIFIC_ENTITY_VRAM entity_default_VRAM
#else #else
#define MODEL_TEXTURE_BASE_ADDRESS 0x8028E000 // TODO shiftability fix #define MODEL_TEXTURE_BASE_ADDRESS 0x8028E000 // TODO shiftability fix

View File

@ -1,10 +1,18 @@
#include "audio.h" #include "audio.h"
#include "ld_addrs.h"
// data // data
extern u16 D_80078530[9]; extern u16 D_80078530[9];
extern s32 D_8007854C[2]; extern s32 D_8007854C[2];
extern f32 AlTuneScaling[]; extern f32 AlTuneScaling[];
#ifdef SHIFT
#define SBN_ROM_OFFSET SBN_ROM_START
#else
#define SBN_ROM_OFFSET 0xF00000
#endif
void func_80052E30(u8 index) { void func_80052E30(u8 index) {
AlUnkVoice* voice = &gSoundGlobals->voices[index]; AlUnkVoice* voice = &gSoundGlobals->voices[index];
@ -12,6 +20,7 @@ void func_80052E30(u8 index) {
voice->priority = AU_PRIORITY_FREE; voice->priority = AU_PRIORITY_FREE;
} }
#ifndef SHIFT
void au_engine_init(s32 outputRate) { void au_engine_init(s32 outputRate) {
AuGlobals* globals; AuGlobals* globals;
ALHeap* alHeap; ALHeap* alHeap;
@ -84,7 +93,7 @@ void au_engine_init(s32 outputRate) {
voice->priority = AU_PRIORITY_FREE; 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++) { for (i = 0; i < 3; i++) {
globals->banks[i] = alHeapAlloc(alHeap, 1, 0x840); globals->banks[i] = alHeapAlloc(alHeap, 1, 0x840);
@ -135,6 +144,9 @@ void au_engine_init(s32 outputRate) {
func_80057ED0(0); func_80057ED0(0);
func_80055050(alHeap); func_80055050(alHeap);
} }
#else
INCLUDE_ASM_SHIFT(void, "audio/2e230_len_2190", au_engine_init);
#endif
static void au_reset_instrument(Instrument* instrument) { static void au_reset_instrument(Instrument* instrument) {
instrument->base = DummyInstrumentBase; instrument->base = DummyInstrumentBase;

View File

@ -1342,6 +1342,7 @@ void initialize_printer(MessagePrintState* printer, s32 arg1, s32 arg2) {
printer->sizeScale = 1.0f; printer->sizeScale = 1.0f;
} }
#ifndef SHIFT
void dma_load_msg(u32 msgID, void* dest) { void dma_load_msg(u32 msgID, void* dest) {
u8* addr = (u8*) MSG_ROM_START + (msgID >> 14); // (msgID >> 16) * 4 u8* addr = (u8*) MSG_ROM_START + (msgID >> 14); // (msgID >> 16) * 4
u8* offset[2]; // start, end u8* offset[2]; // start, end
@ -1354,6 +1355,9 @@ void dma_load_msg(u32 msgID, void* dest) {
// Load the msg data // Load the msg data
dma_copy(MSG_ROM_START + offset[0], MSG_ROM_START + offset[1], dest); 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* load_message_to_buffer(s32 msgID) {
s8* prevBufferPos; s8* prevBufferPos;

View File

@ -210,6 +210,7 @@ s32 get_map_IDs_by_name(const char* mapName, s16* areaID, s16* mapID) {
return FALSE; return FALSE;
} }
#ifndef SHIFT
void* load_asset_by_name(const char* assetName, u32* decompressedSize) { void* load_asset_by_name(const char* assetName, u32* decompressedSize) {
AssetHeader firstHeader; AssetHeader firstHeader;
AssetHeader* assetTableBuffer; AssetHeader* assetTableBuffer;
@ -230,7 +231,11 @@ void* load_asset_by_name(const char* assetName, u32* decompressedSize) {
heap_free(assetTableBuffer); heap_free(assetTableBuffer);
return ret; return ret;
} }
#else
INCLUDE_ASM_SHIFT(void*, "world/world", load_asset_by_name);
#endif
#ifndef SHIFT
s32 get_asset_offset(char* assetName, s32* compressedSize) { s32 get_asset_offset(char* assetName, s32* compressedSize) {
AssetHeader firstHeader; AssetHeader firstHeader;
AssetHeader* assetTableBuffer; AssetHeader* assetTableBuffer;
@ -249,6 +254,9 @@ s32 get_asset_offset(char* assetName, s32* compressedSize) {
heap_free(assetTableBuffer); heap_free(assetTableBuffer);
return ret; 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 } #define AREA(area, jp_name) { ARRAY_COUNT(area##_maps), area##_maps, "area_" #area, jp_name }

View File

@ -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("--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("-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("-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("-w", "--no-warn", action="store_true", help="Inhibit compiler warnings")
parser.add_argument("--ccache", action="store_true", help="Use ccache") parser.add_argument("--ccache", action="store_true", help="Use ccache")
args = parser.parse_args() args = parser.parse_args()
@ -783,6 +784,9 @@ if __name__ == "__main__":
# g1 doesn't affect codegen # g1 doesn't affect codegen
cflags += " -ggdb3" cflags += " -ggdb3"
if args.shift:
cppflags += " -DSHIFT"
if not args.no_warn: if not args.no_warn:
cflags += " -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes" cflags += " -Wmissing-braces -Wimplicit -Wredundant-decls -Wstrict-prototypes"

View File

@ -29,8 +29,8 @@ glabel item_entity_load
/* C786C 8013116C 3C108009 */ lui $s0, %hi(gItemEntityScripts) /* C786C 8013116C 3C108009 */ lui $s0, %hi(gItemEntityScripts)
/* C7870 80131170 02028021 */ addu $s0, $s0, $v0 /* C7870 80131170 02028021 */ addu $s0, $s0, $v0
/* C7874 80131174 8E10DDD4 */ lw $s0, %lo(gItemEntityScripts)($s0) /* C7874 80131174 8E10DDD4 */ lw $s0, %lo(gItemEntityScripts)($s0)
/* C7878 80131178 3C16001D */ lui $s6, 0x1d /* C7878 80131178 3C16001D */ lui $s6, %hi(icon_present_ROM_START)
/* C787C 8013117C 26D6C310 */ addiu $s6, $s6, -0x3cf0 /* C787C 8013117C 26D6C310 */ addiu $s6, $s6, %lo(icon_present_ROM_START)
/* C7880 80131180 AFD00024 */ sw $s0, 0x24($fp) /* C7880 80131180 AFD00024 */ sw $s0, 0x24($fp)
/* C7884 80131184 AFD00028 */ sw $s0, 0x28($fp) /* C7884 80131184 AFD00028 */ sw $s0, 0x28($fp)
.L80131188_C7888: .L80131188_C7888:

View File

@ -23,8 +23,8 @@ glabel SetSpriteShading
/* FE0F8 802D9748 2403FFFF */ addiu $v1, $zero, -1 /* FE0F8 802D9748 2403FFFF */ addiu $v1, $zero, -1
/* FE0FC 802D974C 104300AF */ beq $v0, $v1, .L802D9A0C /* FE0FC 802D974C 104300AF */ beq $v0, $v1, .L802D9A0C
/* FE100 802D9750 24020002 */ addiu $v0, $zero, 2 /* FE100 802D9750 24020002 */ addiu $v0, $zero, 2
/* FE104 802D9754 3C100031 */ lui $s0, 0x31 /* FE104 802D9754 3C100031 */ lui $s0, %hi(sprite_shading_profiles_ROM_START)
/* FE108 802D9758 26105B80 */ addiu $s0, $s0, 0x5b80 /* FE108 802D9758 26105B80 */ addiu $s0, $s0, %lo(sprite_shading_profiles_ROM_START)
/* FE10C 802D975C 00D02021 */ addu $a0, $a2, $s0 /* FE10C 802D975C 00D02021 */ addu $a0, $a2, $s0
/* FE110 802D9760 26050008 */ addiu $a1, $s0, 8 /* FE110 802D9760 26050008 */ addiu $a1, $s0, 8
/* FE114 802D9764 00C52821 */ addu $a1, $a2, $a1 /* FE114 802D9764 00C52821 */ addu $a1, $a2, $a1
@ -43,8 +43,8 @@ glabel SetSpriteShading
/* FE148 802D9798 2652BB68 */ addiu $s2, $s2, %lo(D_802DBB68) /* FE148 802D9798 2652BB68 */ addiu $s2, $s2, %lo(D_802DBB68)
/* FE14C 802D979C 0240302D */ daddu $a2, $s2, $zero /* FE14C 802D979C 0240302D */ daddu $a2, $s2, $zero
/* FE150 802D97A0 8E220000 */ lw $v0, ($s1) /* FE150 802D97A0 8E220000 */ lw $v0, ($s1)
/* FE154 802D97A4 3C030031 */ lui $v1, 0x31 /* FE154 802D97A4 3C030031 */ lui $v1, %hi(sprite_shading_profiles_ROM_START + 0x1D0)
/* FE158 802D97A8 24635D50 */ addiu $v1, $v1, 0x5d50 /* FE158 802D97A8 24635D50 */ addiu $v1, $v1, %lo(sprite_shading_profiles_ROM_START + 0x1D0)
/* FE15C 802D97AC 00431021 */ addu $v0, $v0, $v1 /* FE15C 802D97AC 00431021 */ addu $v0, $v0, $v1
/* FE160 802D97B0 02028021 */ addu $s0, $s0, $v0 /* FE160 802D97B0 02028021 */ addu $s0, $s0, $v0
/* FE164 802D97B4 0200202D */ daddu $a0, $s0, $zero /* FE164 802D97B4 0200202D */ daddu $a0, $s0, $zero

View File

@ -664,8 +664,8 @@ glabel msg_copy_to_print_buffer
/* BB59C 80124E9C 26730001 */ addiu $s3, $s3, 1 /* BB59C 80124E9C 26730001 */ addiu $s3, $s3, 1
/* BB5A0 80124EA0 3C068016 */ lui $a2, %hi(D_80159B50) /* BB5A0 80124EA0 3C068016 */ lui $a2, %hi(D_80159B50)
/* BB5A4 80124EA4 24C69B50 */ addiu $a2, $a2, %lo(D_80159B50) /* BB5A4 80124EA4 24C69B50 */ addiu $a2, $a2, %lo(D_80159B50)
/* BB5A8 80124EA8 3C11001D */ lui $s1, 0x1d /* BB5A8 80124EA8 3C11001D */ lui $s1, %hi(icon_present_ROM_START)
/* BB5AC 80124EAC 2631C310 */ addiu $s1, $s1, -0x3cf0 /* BB5AC 80124EAC 2631C310 */ addiu $s1, $s1, %lo(icon_present_ROM_START)
/* BB5B0 80124EB0 3C018015 */ lui $at, %hi(D_8015131C) /* BB5B0 80124EB0 3C018015 */ lui $at, %hi(D_8015131C)
/* BB5B4 80124EB4 AC26131C */ sw $a2, %lo(D_8015131C)($at) /* BB5B4 80124EB4 AC26131C */ sw $a2, %lo(D_8015131C)($at)
/* BB5B8 80124EB8 00108200 */ sll $s0, $s0, 8 /* BB5B8 80124EB8 00108200 */ sll $s0, $s0, 8

View File

@ -50,8 +50,8 @@ glabel func_80243FC4_A2E204
/* A2E2B8 80244078 0080282D */ daddu $a1, $a0, $zero /* A2E2B8 80244078 0080282D */ daddu $a1, $a0, $zero
/* A2E2BC 8024407C 3C030002 */ lui $v1, 2 /* A2E2BC 8024407C 3C030002 */ lui $v1, 2
/* A2E2C0 80244080 3463A440 */ ori $v1, $v1, 0xa440 /* A2E2C0 80244080 3463A440 */ ori $v1, $v1, 0xa440
/* A2E2C4 80244084 3C050022 */ lui $a1, 0x22 /* A2E2C4 80244084 3C050022 */ lui $a1, %hi(title_bg_1_ROM_START)
/* A2E2C8 80244088 24A591B0 */ addiu $a1, $a1, -0x6e50 /* A2E2C8 80244088 24A591B0 */ addiu $a1, $a1, %lo(title_bg_1_ROM_START)
/* A2E2CC 8024408C 00A32021 */ addu $a0, $a1, $v1 /* A2E2CC 8024408C 00A32021 */ addu $a0, $a1, $v1
/* A2E2D0 80244090 24A54000 */ addiu $a1, $a1, 0x4000 /* A2E2D0 80244090 24A54000 */ addiu $a1, $a1, 0x4000
/* A2E2D4 80244094 8E020000 */ lw $v0, ($s0) /* A2E2D4 80244094 8E020000 */ lw $v0, ($s0)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -3,8 +3,8 @@ obfuscated_battle_heap_create = battle_heap_create - 0xFEFFFFF;
obfuscated_general_heap_create = general_heap_create - 0xFEFEFEF; obfuscated_general_heap_create = general_heap_create - 0xFEFEFEF;
obfuscated_load_engine_data = load_engine_data - 0x315; obfuscated_load_engine_data = load_engine_data - 0x315;
obfuscated_create_audio_system = create_audio_system - 0x7B; obfuscated_create_audio_system = create_audio_system - 0x7B;
D_7599F6D8 = 0x7599F6D8; D_7599F6D8 = _316F30_VRAM - 0xA912928;
D_F79DDD0F = 0xF79DDD0F; D_F79DDD0F = _316F30_ROM_START - 0x8939221;
// effect_flame // effect_flame
D_000B32E0 = 0x000B32E0; // todo look into D_000B32E0 = 0x000B32E0; // todo look into