Image Loading Setup (0x14a5e8)

From Final Fantasy Hacktics Wiki
Revision as of 16:20, 29 October 2024 by Glain (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
#   ROUTINE: Image loading setup (0x14a5e8)
#   Parameters:
#       r4 = (displayPointer) Reference to struct for image display: 52 bytes

0014a5e8: 27bdffe8 addiu r29,r29,-0x0018
0014a5ec: 3c028016 lui r2,0x8016
0014a5f0: 94425ff2 lhu r2,0x5ff2(r2)            #   *0x80165ff2
0014a5f4: 00803821 addu r7,r4,r0
0014a5f8: 10400005 beq r2,r0,0x0014a610         #   if (*0x80165ff2 != 0) {
0014a5fc: afbf0010 sw r31,0x0010(r29)
0014a600: 0c0092f6 jal 0x00024bd8               #       ROUTINE: SYS DrawPrim (displayPointer);
0014a604: 00000000 nop
0014a608: 08052994 j 0x0014a650
0014a60c: 00000000 nop
                                                #   } else {
0014a610: 3c0400ff lui r4,0x00ff
0014a614: 3484ffff ori r4,r4,0xffff             #       0x00ffffff
0014a618: 3c06ff00 lui r6,0xff00                #       0xff000000
0014a61c: 3c058017 lui r5,0x8017                
0014a620: 8ca53f44 lw r5,0x3f44(r5)             #       *0x80173f44
0014a624: 8ce30000 lw r3,0x0000(r7)             #       *(displayPointer)
0014a628: 8ca20000 lw r2,0x0000(r5)             #       *(*0x80173f44)
0014a62c: 00661824 and r3,r3,r6                 #       *displayPointer & 0xff000000
0014a630: 00441024 and r2,r2,r4                 #       *(*0x80173f44) & 0x00ffffff
0014a634: 00621825 or r3,r3,r2                  #       (*displayPointer & 0xff000000) | (*(*0x80173f44) & 0x00ffffff)
0014a638: ace30000 sw r3,0x0000(r7)             #       *displayPointer = (*displayPointer & 0xff000000) | (*(*0x80173f44) & 0x00ffffff)    // This affects what gets displayed
0014a63c: 8ca20000 lw r2,0x0000(r5)             #       *(*0x80173f44)
0014a640: 00e42024 and r4,r7,r4                 #       displayPointer & 0x00ffffff
0014a644: 00461024 and r2,r2,r6                 #       *(*0x80173f44) & 0xff000000
0014a648: 00441025 or r2,r2,r4                  #       (*(*0x80173f44) & 0xff000000) | (displayPointer & 0x00ffffff)
0014a64c: aca20000 sw r2,0x0000(r5)             #       *0x80173f44 = (*(*0x80173f44) & 0xff000000) | (displayPointer & 0x00ffffff)     // Must store this or image doesn't load/display
                                                #   }
0014a650: 8fbf0010 lw r31,0x0010(r29)
0014a654: 27bd0018 addiu r29,r29,0x0018
0014a658: 03e00008 jr r31
0014a65c: 00000000 nop