Difference between revisions of "SUZUKI change volume balance handler"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m
m
Line 1: Line 1:
<font face='Courier New'>
+
#
   
+
# p1 = volume to set
 +
  # p2 = volume division number (probably usually 8 or 0)
 +
#
 +
 
 
  00018240: 27bdffe0 addiu r29,r29,0xffe0
 
  00018240: 27bdffe0 addiu r29,r29,0xffe0
 
  00018244: 00801021 addu r2,r4,r0                volume
 
  00018244: 00801021 addu r2,r4,r0                volume
Line 9: Line 12:
 
  00018258: 00052c03 sra r5,r5,0x10
 
  00018258: 00052c03 sra r5,r5,0x10
 
  0001825c: afbf0018 sw r31,0x0018(r29)
 
  0001825c: afbf0018 sw r31,0x0018(r29)
  00018260: 14a00014 bne r5,r0,0x000182b4        branch if p2 != 0
+
  00018260: 14a00014 bne r5,r0,0x000182b4        branch if volume division value is 0
 
  00018264: a4620000 sh r2,0x0000(r3)            store volume here?
 
  00018264: a4620000 sh r2,0x0000(r3)            store volume here?
 
  00018268: 00042400 sll r4,r4,0x10
 
  00018268: 00042400 sll r4,r4,0x10
Line 34: Line 37:
 
  000182b8: 3c028003 lui r2,0x8003
 
  000182b8: 3c028003 lui r2,0x8003
 
  000182bc: 8c427050 lw r2,0x7050(r2)            volume * 0x4096?
 
  000182bc: 8c427050 lw r2,0x7050(r2)            volume * 0x4096?
  000182c0: 00031a03 sra r3,r3,0x08
+
  000182c0: 00031a03 sra r3,r3,0x08               volume input * 8
  000182c4: 00021203 sra r2,r2,0x08
+
  000182c4: 00021203 sra r2,r2,0x08               volume  RAM  * 8
  000182c8: 00621023 subu r2,r3,r2  
+
  000182c8: 00621023 subu r2,r3,r2               difference
  000182cc: 10400008 beq r2,r0,0x000182f0        get difference?
+
  000182cc: 10400008 beq r2,r0,0x000182f0        end if no volume change
 
  000182d0: 00000000 nop
 
  000182d0: 00000000 nop
 
  000182d4: 0045001a div r2,r5                    ohh how scandelous. division? from my compiler?
 
  000182d4: 0045001a div r2,r5                    ohh how scandelous. division? from my compiler?
  000182d8: 00001012 mflo r2                      difference / p2
+
  000182d8: 00001012 mflo r2                      difference divided by probably 0x8
 
  000182dc: 3c018003 lui r1,0x8003
 
  000182dc: 3c018003 lui r1,0x8003
  000182e0: a4267058 sh r6,0x7058(r1)
+
  000182e0: a4267058 sh r6,0x7058(r1)             store volume division amount
 
  000182e4: 00021200 sll r2,r2,0x08
 
  000182e4: 00021200 sll r2,r2,0x08
 
  000182e8: 3c018003 lui r1,0x8003
 
  000182e8: 3c018003 lui r1,0x8003
  000182ec: ac227054 sw r2,0x7054(r1)            store?
+
  000182ec: ac227054 sw r2,0x7054(r1)            store? (might be real volume difference?)
 
  000182f0: 8fbf0018 lw r31,0x0018(r29)
 
  000182f0: 8fbf0018 lw r31,0x0018(r29)
 
  000182f4: 27bd0020 addiu r29,r29,0x0020
 
  000182f4: 27bd0020 addiu r29,r29,0x0020
 
  000182f8: 03e00008 jr r31
 
  000182f8: 03e00008 jr r31
 
  000182fc: 00000000 nop
 
  000182fc: 00000000 nop
</font>
 

Revision as of 06:02, 22 May 2025

# 
# p1 = volume to set
# p2 = volume division number (probably usually 8 or 0)
#
00018240: 27bdffe0 addiu r29,r29,0xffe0
00018244: 00801021 addu r2,r4,r0                volume
00018248: 3c038003 lui r3,0x8003
0001824c: 2463705a addiu r3,r3,0x705a
00018250: 00a03021 addu r6,r5,r0
00018254: 00052c00 sll r5,r5,0x10
00018258: 00052c03 sra r5,r5,0x10
0001825c: afbf0018 sw r31,0x0018(r29)
00018260: 14a00014 bne r5,r0,0x000182b4         branch if volume division value is 0
00018264: a4620000 sh r2,0x0000(r3)             store volume here?
00018268: 00042400 sll r4,r4,0x10
0001826c: 3c018003 lui r1,0x8003
00018270: ac247050 sw r4,0x7050(r1)             volume * 0x4096
00018274: 00042403 sra r4,r4,0x10               volume
00018278: 2465ffca addiu r5,r3,0xffca           SpuCommonAttr.vol ptr
0001827c: 3c018003 lui r1,0x8003
00018280: a4207058 sh r0,0x7058(r1)
00018284: 3c018003 lui r1,0x8003
00018288: a4227048 sh r2,0x7048(r1)
0001828c: 0c006123 jal 0x0001848c               SetVolBalance
00018290: 00003021 addu r6,r0,r0                don't invert right channel volume
00018294: 3c028003 lui r2,0x8003
00018298: 8c427020 lw r2,0x7020(r2)
0001829c: 00000000 nop
000182a0: 34420003 ori r2,r2,0x0003
000182a4: 3c018003 lui r1,0x8003
000182a8: ac227020 sw r2,0x7020(r1)
000182ac: 080060bc j 0x000182f0
000182b0: 00000000 nop
000182b4: 00041c00 sll r3,r4,0x10
000182b8: 3c028003 lui r2,0x8003
000182bc: 8c427050 lw r2,0x7050(r2)             volume * 0x4096?
000182c0: 00031a03 sra r3,r3,0x08               volume input * 8
000182c4: 00021203 sra r2,r2,0x08               volume  RAM  * 8
000182c8: 00621023 subu r2,r3,r2                difference
000182cc: 10400008 beq r2,r0,0x000182f0         end if no volume change
000182d0: 00000000 nop
000182d4: 0045001a div r2,r5                    ohh how scandelous. division? from my compiler?
000182d8: 00001012 mflo r2                      difference divided by probably 0x8
000182dc: 3c018003 lui r1,0x8003
000182e0: a4267058 sh r6,0x7058(r1)             store volume division amount
000182e4: 00021200 sll r2,r2,0x08
000182e8: 3c018003 lui r1,0x8003
000182ec: ac227054 sw r2,0x7054(r1)             store? (might be real volume difference?)
000182f0: 8fbf0018 lw r31,0x0018(r29)
000182f4: 27bd0020 addiu r29,r29,0x0020
000182f8: 03e00008 jr r31
000182fc: 00000000 nop