nuAuDmaNew

This commit is contained in:
Ethan Roseman 2020-12-10 15:39:32 +09:00
parent f9d084937f
commit 55a37ba673
8 changed files with 40 additions and 43 deletions

View File

@ -263,7 +263,7 @@ glabel D_80078170
glabel nuAuPreNMIFunc
.word 0x00000000
glabel D_80078178
glabel nuAuDmaNext
.word 0x00000000
glabel nuAuFrameCounter

View File

@ -118,8 +118,8 @@ glabel func_8004AB00
/* 260B8 8004ACB8 1440FFF6 */ bnez $v0, .L8004AC94
/* 260BC 8004ACBC 26100004 */ addiu $s0, $s0, 4
/* 260C0 8004ACC0 0000882D */ daddu $s1, $zero, $zero
/* 260C4 8004ACC4 3C02800A */ lui $v0, %hi(D_800A3BE0)
/* 260C8 8004ACC8 24423BE0 */ addiu $v0, $v0, %lo(D_800A3BE0)
/* 260C4 8004ACC4 3C02800A */ lui $v0, %hi(nuAuDmaBuf)
/* 260C8 8004ACC8 24423BE0 */ addiu $v0, $v0, %lo(nuAuDmaBuf)
/* 260CC 8004ACCC 0040802D */ daddu $s0, $v0, $zero
/* 260D0 8004ACD0 26120014 */ addiu $s2, $s0, 0x14
/* 260D4 8004ACD4 AE000004 */ sw $zero, 4($s0)
@ -164,7 +164,7 @@ glabel func_8004AB00
/* 2616C 8004AD6C 27A50018 */ addiu $a1, $sp, 0x18
/* 26170 8004AD70 8FA40020 */ lw $a0, 0x20($sp)
/* 26174 8004AD74 0C014B97 */ jal func_80052E5C
/* 26178 8004AD78 00000000 */ nop
/* 26178 8004AD78 00000000 */ nop
/* 2617C 8004AD7C 3C10800A */ lui $s0, %hi(D_800A0F58)
/* 26180 8004AD80 26100F58 */ addiu $s0, $s0, %lo(D_800A0F58)
/* 26184 8004AD84 0200202D */ daddu $a0, $s0, $zero

View File

@ -3,8 +3,8 @@
glabel nuAuCleanDMABuffers
/* 26668 8004B268 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 2666C 8004B26C 3C02800A */ lui $v0, %hi(D_800A3BD0)
/* 26670 8004B270 24423BD0 */ addiu $v0, $v0, %lo(D_800A3BD0)
/* 2666C 8004B26C 3C02800A */ lui $v0, %hi(nuAuDmaState)
/* 26670 8004B270 24423BD0 */ addiu $v0, $v0, %lo(nuAuDmaState)
/* 26674 8004B274 AFBF001C */ sw $ra, 0x1c($sp)
/* 26678 8004B278 AFB20018 */ sw $s2, 0x18($sp)
/* 2667C 8004B27C AFB10014 */ sw $s1, 0x14($sp)
@ -40,13 +40,13 @@ glabel nuAuCleanDMABuffers
/* 266E8 8004B2E8 0220802D */ daddu $s0, $s1, $zero
.L8004B2EC:
/* 266EC 8004B2EC 1600FFE8 */ bnez $s0, .L8004B290
/* 266F0 8004B2F0 00000000 */ nop
/* 266F0 8004B2F0 00000000 */ nop
.L8004B2F4:
/* 266F4 8004B2F4 3C038008 */ lui $v1, %hi(D_8007817C)
/* 266F8 8004B2F8 2463817C */ addiu $v1, $v1, %lo(D_8007817C)
/* 266FC 8004B2FC 8C620000 */ lw $v0, ($v1)
/* 26700 8004B300 3C018008 */ lui $at, %hi(D_80078178)
/* 26704 8004B304 AC208178 */ sw $zero, %lo(D_80078178)($at)
/* 26700 8004B300 3C018008 */ lui $at, %hi(nuAuDmaNext)
/* 26704 8004B304 AC208178 */ sw $zero, %lo(nuAuDmaNext)($at)
/* 26708 8004B308 24420001 */ addiu $v0, $v0, 1
/* 2670C 8004B30C AC620000 */ sw $v0, ($v1)
/* 26710 8004B310 8FBF001C */ lw $ra, 0x1c($sp)

View File

@ -12,9 +12,9 @@ glabel nuAuDmaCallBack
/* 26490 8004B090 14E00005 */ bnez $a3, .L8004B0A8
/* 26494 8004B094 AFB00010 */ sw $s0, 0x10($sp)
/* 26498 8004B098 0C0187A4 */ jal osVirtualToPhysical
/* 2649C 8004B09C 00000000 */ nop
/* 2649C 8004B09C 00000000 */ nop
/* 264A0 8004B0A0 08012C82 */ j .L8004B208
/* 264A4 8004B0A4 00000000 */ nop
/* 264A4 8004B0A4 00000000 */ nop
.L8004B0A8:
/* 264A8 8004B0A8 0000802D */ daddu $s0, $zero, $zero
/* 264AC 8004B0AC 3C11800A */ lui $s1, %hi(D_800A3BD4)
@ -31,18 +31,18 @@ glabel nuAuDmaCallBack
/* 264D4 8004B0D4 0220802D */ daddu $s0, $s1, $zero
/* 264D8 8004B0D8 8E310000 */ lw $s1, ($s1)
/* 264DC 8004B0DC 1620FFF7 */ bnez $s1, .L8004B0BC
/* 264E0 8004B0E0 00000000 */ nop
/* 264E0 8004B0E0 00000000 */ nop
.L8004B0E4:
/* 264E4 8004B0E4 3C12800A */ lui $s2, %hi(D_800A3BD0)
/* 264E8 8004B0E8 26523BD0 */ addiu $s2, $s2, %lo(D_800A3BD0)
/* 264E4 8004B0E4 3C12800A */ lui $s2, %hi(nuAuDmaState)
/* 264E8 8004B0E8 26523BD0 */ addiu $s2, $s2, %lo(nuAuDmaState)
/* 264EC 8004B0EC 8E510008 */ lw $s1, 8($s2)
/* 264F0 8004B0F0 16200006 */ bnez $s1, .L8004B10C
/* 264F4 8004B0F4 0220202D */ daddu $a0, $s1, $zero
/* 264F8 8004B0F8 8E440004 */ lw $a0, 4($s2)
/* 264FC 8004B0FC 0C0187A4 */ jal osVirtualToPhysical
/* 26500 8004B100 00000000 */ nop
/* 26500 8004B100 00000000 */ nop
/* 26504 8004B104 08012C82 */ j .L8004B208
/* 26508 8004B108 00000000 */ nop
/* 26508 8004B108 00000000 */ nop
.L8004B10C:
/* 2650C 8004B10C 8E220000 */ lw $v0, ($s1)
/* 26510 8004B110 0C012D03 */ jal alUnlink
@ -52,7 +52,7 @@ glabel nuAuDmaCallBack
/* 26520 8004B120 0C012CFB */ jal alLink
/* 26524 8004B124 0200282D */ daddu $a1, $s0, $zero
/* 26528 8004B128 08012C61 */ j .L8004B184
/* 2652C 8004B12C 00000000 */ nop
/* 2652C 8004B12C 00000000 */ nop
.L8004B130:
/* 26530 8004B130 8E450004 */ lw $a1, 4($s2)
/* 26534 8004B134 10A00010 */ beqz $a1, .L8004B178
@ -72,14 +72,14 @@ glabel nuAuDmaCallBack
/* 26568 8004B168 0C0187A4 */ jal osVirtualToPhysical
/* 2656C 8004B16C AE23000C */ sw $v1, 0xc($s1)
/* 26570 8004B170 08012C82 */ j .L8004B208
/* 26574 8004B174 00000000 */ nop
/* 26574 8004B174 00000000 */ nop
.L8004B178:
/* 26578 8004B178 AE510004 */ sw $s1, 4($s2)
/* 2657C 8004B17C AE200000 */ sw $zero, ($s1)
/* 26580 8004B180 AE200004 */ sw $zero, 4($s1)
.L8004B184:
/* 26584 8004B184 3C048008 */ lui $a0, %hi(D_80078178)
/* 26588 8004B188 24848178 */ addiu $a0, $a0, %lo(D_80078178)
/* 26584 8004B184 3C048008 */ lui $a0, %hi(nuAuDmaNext)
/* 26588 8004B188 24848178 */ addiu $a0, $a0, %lo(nuAuDmaNext)
/* 2658C 8004B18C 32700001 */ andi $s0, $s3, 1
/* 26590 8004B190 02709823 */ subu $s3, $s3, $s0
/* 26594 8004B194 3C02800A */ lui $v0, %hi(D_800A3720)

View File

@ -1,22 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel nuAuDmaNew
/* 26624 8004B224 3C03800A */ lui $v1, %hi(D_800A3BD0)
/* 26628 8004B228 24633BD0 */ addiu $v1, $v1, %lo(D_800A3BD0)
/* 2662C 8004B22C 90620000 */ lbu $v0, ($v1)
/* 26630 8004B230 14400007 */ bnez $v0, .L8004B250
/* 26634 8004B234 00000000 */ nop
/* 26638 8004B238 3C02800A */ lui $v0, %hi(D_800A3BE0)
/* 2663C 8004B23C 24423BE0 */ addiu $v0, $v0, %lo(D_800A3BE0)
/* 26640 8004B240 AC620008 */ sw $v0, 8($v1)
/* 26644 8004B244 24020001 */ addiu $v0, $zero, 1
/* 26648 8004B248 AC600004 */ sw $zero, 4($v1)
/* 2664C 8004B24C A0620000 */ sb $v0, ($v1)
.L8004B250:
/* 26650 8004B250 3C028005 */ lui $v0, %hi(nuAuDmaCallBack)
/* 26654 8004B254 2442B074 */ addiu $v0, $v0, %lo(nuAuDmaCallBack)
/* 26658 8004B258 3C018008 */ lui $at, %hi(D_80078178)
/* 2665C 8004B25C AC208178 */ sw $zero, %lo(D_80078178)($at)
/* 26660 8004B260 03E00008 */ jr $ra
/* 26664 8004B264 AC830000 */ sw $v1, ($a0)

View File

@ -2,6 +2,9 @@
#include "nu/nusys.h"
#include "nu/nualsgi.h"
extern NUDMAState nuAuDmaState;
extern s32 nuAuDmaNext;
INCLUDE_ASM(s32, "code_25f00_len_940", func_8004AB00);
void nuAuPreNMIFuncSet(NUAuPreNMIFunc func) {
@ -15,7 +18,17 @@ INCLUDE_ASM(s32, "code_25f00_len_940", func_8004AE08);
INCLUDE_ASM(s32, "code_25f00_len_940", nuAuDmaCallBack);
INCLUDE_ASM(ALDMAproc, "code_25f00_len_940", nuAuDmaNew, NUDMAState **state);
ALDMAproc nuAuDmaNew(NUDMAState **state) {
if (!nuAuDmaState.initialized) {
nuAuDmaState.firstFree = &nuAuDmaBuf;
nuAuDmaState.firstUsed = NULL;
nuAuDmaState.initialized = TRUE;
}
nuAuDmaNext = 0;
*state = &nuAuDmaState;
return nuAuDmaCallBack;
}
INCLUDE_ASM(void, "code_25f00_len_940", nuAuCleanDMABuffers);

View File

@ -563,12 +563,15 @@ load_demo_battle = 0x80072E14;
EnemyNpcHit = 0x80077F70;
EnemyNpcDefeat = 0x8007809C;
nuAuPreNMIFunc = 0x80078174;
nuAuDmaNext = 0x80078178;
nuAuFrameCounter = 0x8007817C;
D_80078DB0 = 0x80078DB0;
D_80078DB4 = 0x80078DB4;
gEffectTable = 0x8007F214;
gItemTable = 0x800878E0; // size:0x2D80
gAreas = 0x800934F0;
nuAuDmaState = 0x800A3BD0;
nuAuDmaBuf = 0x800A3BE0;
gCurrentEncounter = 0x800B0F10; // size:0xB0
gBattleState = 0x800DC068;
gBattleStatus = 0x800DC070; // size:0x490

View File

@ -99,6 +99,9 @@ nuContRmbCallBack = 0x80093D00;
nuGfxFunc = 0x80093D10;
nuGfxPreNMIFunc = 0x80093D14;
nuAuDmaState = 0x800A3BD0;
nuAuDmaBuf = 0x800A3BE0;
osViModeTable = 0x800946A0;
D_800959D4 = 0x800959D4;
D_8009A5B0 = 0x8009A5B0;