0x1a4de8

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
#   Parameters:
#       r4 = (p1) ?
#       r5 = (p2) ? (Sometimes 0)
#   Returns:
#       r2 = ?

801a4de8: 2484000f addiu r4,r4,0x000f               #   p1 + 15
801a4dec: 000420c2 srl r4,r4,0x03                   #   v4 = (p1 + 15) >> 3
801a4df0: 00804821 addu r9,r4,r0                    #   (p1 + 15) >> 3
801a4df4: 3c07801b lui r7,0x801b
801a4df8: 8ce769a8 lw r7,0x69a8(r7)                 #   *0x801b69a8
801a4dfc: 000540c0 sll r8,r5,0x03                   #   p2 * 8
801a4e00: 8ce30000 lw r3,0x0000(r7)                 #   v3 = *(*0x801b69a8)		// this is just a pointer to itself...? palette data, according to Xifanie. in the file this looks completely irrelevant?
                                                    #   while (true) {
801a4e04: 00000000 nop
801a4e08: 94660004 lhu r6,0x0004(r3)                #       v6 = *(v3 + 4)		//
801a4e0c: 00000000 nop
801a4e10: 00c4102b sltu r2,r6,r4
801a4e14: 1440001b bne r2,r0,0x801a4e84             #       if (v6 >= v4) {		// 
801a4e18: 00000000 nop
801a4e1c: 14c40004 bne r6,r4,0x801a4e30             #           if (v6 == v4) {
801a4e20: 00000000 nop
801a4e24: 8c620000 lw r2,0x0000(r3)                 #               *v3
801a4e28: 08069395 j 0x801a4e54
801a4e2c: ace20000 sw r2,0x0000(r7)                 #               *v7 = *v3
                                                    #           } else {
801a4e30: 94620004 lhu r2,0x0004(r3)                #               *(v3 + 4)
801a4e34: 00000000 nop
801a4e38: 00441023 subu r2,r2,r4                    #               *(v3 + 4) - v4
801a4e3c: a4620004 sh r2,0x0004(r3)                 #               *(v3 + 4) = *(v3 + 4) - v4
801a4e40: 94620004 lhu r2,0x0004(r3)                #               *(v3 + 4)
801a4e44: 00000000 nop
801a4e48: 000210c0 sll r2,r2,0x03                   #               *(v3 + 4) * 8
801a4e4c: 00621821 addu r3,r3,r2                    #               v3 + (*(v3 + 4) * 8)
801a4e50: a4690004 sh r9,0x0004(r3)                 #               *(v3 + (*(v3 + 4) * 8) + 4) = (p1 + 15) >> 3
                                                    #           }
801a4e54: a4650006 sh r5,0x0006(r3)                 #           *(v3 + 6) = p2
801a4e58: 3c01801c lui r1,0x801c
801a4e5c: 00280821 addu r1,r1,r8
801a4e60: 8c228968 lw r2,-0x7698(r1)                #           *(0x801b8968 + (p2 * 8))
801a4e64: 3c01801b lui r1,0x801b
801a4e68: ac2769a8 sw r7,0x69a8(r1)                 #           *0x801b69a8 = v7
801a4e6c: ac620000 sw r2,0x0000(r3)                 #           *v3 = *(0x801b8968 + (p2 * 8))
801a4e70: 3c01801c lui r1,0x801c
801a4e74: 00280821 addu r1,r1,r8
801a4e78: ac238968 sw r3,-0x7698(r1)                #           *(0x801b8968 + (p2 * 8)) = v3
801a4e7c: 080693a5 j 0x801a4e94                     #           return v3 + 8;
801a4e80: 24620008 addiu r2,r3,0x0008
                                                    #       }
801a4e84: 00603821 addu r7,r3,r0                    #       v7 = v3
801a4e88: 8c630000 lw r3,0x0000(r3)                 #       v3 = *v3		// continues to reload the same pointer...?
801a4e8c: 08069381 j 0x801a4e04
801a4e90: 00000000 nop                              #   }
801a4e94: 03e00008 jr r31
801a4e98: 00000000 nop