Birthday Menu Related? (0x6920c)

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
#   ROUTINE: ? 0x6920c (Birthday menu related?)
#       Mostly for menu graphics?
#       Parameters:
#           a0 = (p1) ?
#           a1 = (p2) ?

8006920c: 3c038009 lui r3,0x8009
80069210: 8c63fc00 lw r3,-0x0400(r3)                #   *0x8008fc00
80069214: 27bdffb0 addiu r29,r29,-0x0050
80069218: afb10044 sw r17,0x0044(r29)
8006921c: 00808821 addu r17,r4,r0                   #   p1
80069220: afb20048 sw r18,0x0048(r29)
80069224: 00a09021 addu r18,r5,r0                   #   p2
80069228: afbf004c sw r31,0x004c(r29)
8006922c: 28620020 slti r2,r3,0x0020                #   if (*0x8008fc00 >= 32)
80069230: 1040011e beq r2,r0,0x800696ac             #       return;
80069234: afb00040 sw r16,0x0040(r29)
80069238: 00031140 sll r2,r3,0x05                   #   *0x8008fc00 * 32
8006923c: 3c038009 lui r3,0x8009
80069240: 2463fc6c addiu r3,r3,-0x0394              #   0x8008fc6c
80069244: 3c048005 lui r4,0x8005
80069248: 8c84e5bc lw r4,-0x1a44(r4)                #   *0x8004e5bc
8006924c: 00431021 addu r2,r2,r3                    #   (*0x8008fc00 * 32) + 0x8008fc6c
80069250: 00042280 sll r4,r4,0x0a                   #   *0x8004e5bc * 1024
80069254: 00822021 addu r4,r4,r2                    #   (*0x8004e5bc * 1024) + (*0x8008fc00 * 32) + 0x8008fc6c
80069258: 0c008f60 jal 0x80023d80                   #   P22 SetSprt (r4 = primative address for menu data);             // Confirm menu doesn't display if removed  // without a sprite, the menu can't... display.
8006925c: 2484000c addiu r4,r4,0x000c
80069260: 8e220018 lw r2,0x0018(r17)                #   *(p1 + 0x18)
80069264: 00000000 nop
80069268: 10400008 beq r2,r0,0x8006928c
8006926c: 2442ffff addiu r2,r2,-0x0001              #   *(p1 + 0x18) - 1
                                                    #   if (*(p1 + 0x18) != 0) {        // Runs when confirm menu is up, but not otherwise.  Else block also runs too!  Maybe different frames.
80069270: 8e230024 lw r3,0x0024(r17)                #       *(p1 + 0x24)
80069274: 00021100 sll r2,r2,0x04                   #       (*(p1 + 0x18) - 1) * 16
80069278: 00621821 addu r3,r3,r2                    #       *(p1 + 0x24) + ((*(p1 + 0x18) - 1) * 16)
8006927c: afa30018 sw r3,0x0018(r29)                #       stack.0x18 = *(p1 + 0x24) + ((*(p1 + 0x18) - 1) * 16)
80069280: 8e220028 lw r2,0x0028(r17)                #       *(p1 + 0x28)
80069284: 0801a4a7 j 0x8006929c
80069288: afa2001c sw r2,0x001c(r29)                #       stack.0x1c = *(p1 + 0x28)
                                                    #   } else {                        // Runs with or without confirm menu up.
8006928c: 8e220024 lw r2,0x0024(r17)                #       *(p1 + 0x24)                // 0x0? = Normal palette, 0x1? = Greyed out palette
80069290: 8e230028 lw r3,0x0028(r17)                #       *(p1 + 0x28)                // Palette related?
80069294: afa20018 sw r2,0x0018(r29)                #       stack.0x18 = *(p1 + 0x24)
80069298: afa3001c sw r3,0x001c(r29)                #       stack.0x1c = *(p1 + 0x28)
                                                    #   }
8006929c: 8fa40018 lw r4,0x0018(r29)                
800692a0: 8fa5001c lw r5,0x001c(r29)
800692a4: 0c008e95 jal 0x80023a54                   #   Clut = P01 GetClut (Clut X address, Clut Y address);                            // Menus are black boxes if removed
800692a8: 00000000 nop
800692ac: 3c048009 lui r4,0x8009
800692b0: 8c84fc00 lw r4,-0x0400(r4)                #   *0x8008fc00
800692b4: 3c038005 lui r3,0x8005
800692b8: 8c63e5bc lw r3,-0x1a44(r3)                #   *0x8004e5bc
800692bc: 00042140 sll r4,r4,0x05                   #   *0x8008fc00 * 32
800692c0: 00031a80 sll r3,r3,0x0a                   #   *0x8004e5bc * 1024
800692c4: 00832021 addu r4,r4,r3                    #   (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)
800692c8: 3c018009 lui r1,0x8009
800692cc: 2421fc86 addiu r1,r1,-0x037a              #   0x8008fc86
800692d0: 00240821 addu r1,r1,r4                    #   (*0x8004e5bc * 1024) + (*0x8008fc00 * 32) + 0x8008fc86
800692d4: a4220000 sh r2,0x0000(r1)                 #   *((*0x8004e5bc * 1024) + (*0x8008fc00 * 32) + 0x8008fc86) = CLUT
800692d8: 92220034 lbu r2,0x0034(r17)               #   *(p1 + 0x34)
800692dc: 00000000 nop
800692e0: 3c018009 lui r1,0x8009
800692e4: 2421fc7c addiu r1,r1,-0x0384              #   0x8008fc7c
800692e8: 00240821 addu r1,r1,r4                    #   0x8008fc7c + *(p1 + 0x34)
800692ec: a0220000 sb r2,0x0000(r1)                 #   *(0x8008fc7c + (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)) = *(p1 + 0x34)
800692f0: 3c028005 lui r2,0x8005
800692f4: 8c42e5bc lw r2,-0x1a44(r2)                #   *0x8004e5bc
800692f8: 3c038009 lui r3,0x8009
800692fc: 8c63fc00 lw r3,-0x0400(r3)                #   *0x8008fc00
80069300: 92240035 lbu r4,0x0035(r17)               #   *(p1 + 0x35)
80069304: 00021280 sll r2,r2,0x0a                   #   *0x8004e5bc * 1024
80069308: 00031940 sll r3,r3,0x05                   #   *0x8008fc00 * 32
8006930c: 00431021 addu r2,r2,r3                    #   (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)
80069310: 3c018009 lui r1,0x8009
80069314: 2421fc7d addiu r1,r1,-0x0383              #   0x8008fc7d
80069318: 00220821 addu r1,r1,r2                    #   0x8008fc7d + (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)
8006931c: a0240000 sb r4,0x0000(r1)                 #   *(0x8008fc7d + (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)) = *(p1 + 0x35)
80069320: 3c028005 lui r2,0x8005
80069324: 8c42e5bc lw r2,-0x1a44(r2)                #   *0x8004e5bc
80069328: 3c038009 lui r3,0x8009
8006932c: 8c63fc00 lw r3,-0x0400(r3)                #   *0x8008fc00   
80069330: 92240036 lbu r4,0x0036(r17)               #   *(p1 + 0x36)
80069334: 00021280 sll r2,r2,0x0a                   #   *0x8004e5bc * 1024
80069338: 00031940 sll r3,r3,0x05                   #   *0x8008fc00 * 32
8006933c: 00431021 addu r2,r2,r3                    #   (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)
80069340: 3c018009 lui r1,0x8009
80069344: 2421fc7e addiu r1,r1,-0x0382              #   0x8008fc7e
80069348: 00220821 addu r1,r1,r2                    #   0x8008fc7e + (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)
8006934c: a0240000 sb r4,0x0000(r1)                 #   *(0x8008fc7e + (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)) = *(p1 + 0x36)
80069350: 8e260004 lw r6,0x0004(r17)                #   *(p1 + 0x04)
80069354: 8e250000 lw r5,0x0000(r17)                #   *p1
80069358: 8e270008 lw r7,0x0008(r17)                #   *(p1 + 0x08)
8006935c: 30a40004 andi r4,r5,0x0004                #   *p1 & 0x04
80069360: 0004202b sltu r4,r0,r4                    #   (0 < (*p1 & 0x04)) ? 1 : 0      // 0 if (*p1 & 0x04) == 0, 1 otherwise
80069364: 30a500c0 andi r5,r5,0x00c0                #   *p1 & 0xc0
80069368: 0c008e63 jal 0x8002398c                   #   TPAGE = P00 GetTpage (((0 < (*p1 & 0x04)) ? 1 : 0), ((*p1 & 0xc0) / 64), *(p1 + 0x04), *(p1 + 0x08));   // Menu graphics messed up if removed
8006936c: 00052982 srl r5,r5,0x06                   #   (*p1 & 0xc0) / 64
80069370: 34050001 ori r5,r0,0x0001                 #   1
80069374: 00003021 addu r6,r0,r0                    #   0
80069378: 3047ffff andi r7,r2,0xffff                #   TPAGE & 0xffff
8006937c: 3c028005 lui r2,0x8005
80069380: 8c42e5bc lw r2,-0x1a44(r2)                #   *0x8004e5bc
80069384: 3c048009 lui r4,0x8009
80069388: 8c84fc00 lw r4,-0x0400(r4)                #   *0x8008fc00
8006938c: 3c108009 lui r16,0x8009
80069390: 2610fc6c addiu r16,r16,-0x0394            #   0x8008fc6c
80069394: afa00010 sw r0,0x0010(r29)                #   0
80069398: 00021280 sll r2,r2,0x0a                   #   *0x8004e5bc * 1024
8006939c: 00042140 sll r4,r4,0x05                   #   *0x8008fc00 * 32
800693a0: 00902021 addu r4,r4,r16                   #   (*0x8008fc00 * 32) + 0x8008fc6c
800693a4: 0c009533 jal 0x800254cc                   #   ? 0x254cc (((GPU Primative Address) + (*0x8008fc00 * 32) + 0x8008fc6c), 1, 0, TPAGE ID, 0);   // Loads wrong menu graphics if removed  
800693a8: 00442021 addu r4,r2,r4                    #   (*0x8004e5bc * 1024) + (*0x8008fc00 * 32) + 0x8008fc6c
800693ac: 8e220000 lw r2,0x0000(r17)                #   *p1
800693b0: 00000000 nop
800693b4: 30420020 andi r2,r2,0x0020                #   *p1 & 0x20
800693b8: 10400002 beq r2,r0,0x800693c4             
800693bc: 00002821 addu r5,r0,r0                    #   paramValue = 0
                                                    #   if (*p1 & 0x20) {
800693c0: 34050001 ori r5,r0,0x0001                 #       paramValue = 1
                                                    #   }
800693c4: 3c048005 lui r4,0x8005
800693c8: 8c84e5bc lw r4,-0x1a44(r4)                #   *0x8004e5bc
800693cc: 3c028009 lui r2,0x8009
800693d0: 8c42fc00 lw r2,-0x0400(r2)                #   *0x8008fc00
800693d4: 00042280 sll r4,r4,0x0a                   #   *0x8004e5bc * 1024
800693d8: 00021140 sll r2,r2,0x05                   #   *0x8008fc00 * 32
800693dc: 00501021 addu r2,r2,r16                   #   (*0x8008fc00 * 32) + 0x8008fc6c
800693e0: 00822021 addu r4,r4,r2                    #   (*0x8004e5bc * 1024) + (*0x8008fc00 * 32) + 0x8008fc6c
800693e4: 0c008f1a jal 0x80023c68                   #   P10 SetSemiTrans (((GPU Primative address) + (*0x8008fc00 * 32) + 0x8008fc78), paramValue);       // No discernable effect if removed // menus ain't transparent so.
800693e8: 2484000c addiu r4,r4,0x000c               #   (*0x8004e5bc * 1024) + (*0x8008fc00 * 32) + 0x8008fc78
800693ec: 8e220000 lw r2,0x0000(r17)                #   *p1
800693f0: 00000000 nop
800693f4: 30420100 andi r2,r2,0x0100                #   *p1 & 0x100
800693f8: 10400055 beq r2,r0,0x80069550
800693fc: 27a60020 addiu r6,r29,0x0020              #   stack.0x20
                                                    #   if (*p1 & 0x100) {
80069400: 2625002c addiu r5,r17,0x002c              #       p1 + 0x2c
80069404: 8e240014 lw r4,0x0014(r17)                #       value = *(p1 + 0x14)
80069408: 00000000 nop
8006940c: 000417c2 srl r2,r4,0x1f                   #       roundingOffset = value >> 31;                    // Sign bit; either 0 or 1
80069410: 00822021 addu r4,r4,r2                    #       dividend = value + roundingOffset 
80069414: 0c01a630 jal 0x800698c0                   #       ? 0x698c0 ((dividend / 2), (p1 + 0x2c));                                            // Confirm menu slightly delayed if removed
80069418: 00042043 sra r4,r4,0x01                   #       dividend / 2
8006941c: 3c048009 lui r4,0x8009
80069420: 8c84fc00 lw r4,-0x0400(r4)                #       *0x8008fc00
80069424: 3c038005 lui r3,0x8005
80069428: 8c63e5bc lw r3,-0x1a44(r3)                #       *0x8004e5bc
8006942c: 8e25001c lw r5,0x001c(r17)                #       *(p1 + 0x1c)       
80069430: 97a20020 lhu r2,0x0020(r29)               #       stack.0x20
80069434: 00042140 sll r4,r4,0x05                   #       *0x8008fc00 * 32
80069438: 00031a80 sll r3,r3,0x0a                   #       *0x8004e5bc * 1024 
8006943c: 00832021 addu r4,r4,r3                    #       (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)
80069440: 00451021 addu r2,r2,r5                    #       stack.0x20 + *(p1 + 0x1c)
80069444: 3c018009 lui r1,0x8009
80069448: 2421fc80 addiu r1,r1,-0x0380              #       0x8008fc80
8006944c: 00240821 addu r1,r1,r4                    #       0x8008fc80 + (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)
80069450: a4220000 sh r2,0x0000(r1)                 #       *(0x8008fc80 + (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)) = stack.0x20 + *(p1 + 0x1c)
80069454: 8e230020 lw r3,0x0020(r17)                #       *(p1 + 0x20)
80069458: 97a20022 lhu r2,0x0022(r29)               #       stack.0x22
8006945c: 00000000 nop
80069460: 00431021 addu r2,r2,r3                    #       stack.0x22 + *(p1 + 0x20)
80069464: 3c018009 lui r1,0x8009
80069468: 2421fc82 addiu r1,r1,-0x037e              #       0x8008fc82
8006946c: 00240821 addu r1,r1,r4                    #       0x8008fc82 + (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)
80069470: a4220000 sh r2,0x0000(r1)                 #       *(0x8008fc82 + (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)) = stack.0x22 + *(p1 + 0x20)
80069474: 9222002c lbu r2,0x002c(r17)               #       *(p1 + 0x2c)
80069478: 93a30020 lbu r3,0x0020(r29)               #       stack.0x20
8006947c: 00000000 nop
80069480: 00431021 addu r2,r2,r3                    #       *(p1 + 0x2c) + stack.0x20
80069484: 3c018009 lui r1,0x8009
80069488: 2421fc84 addiu r1,r1,-0x037c              #       0x8008fc84
8006948c: 00240821 addu r1,r1,r4                    #       0x8008fc84 + (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)
80069490: a0220000 sb r2,0x0000(r1)                 #       *(0x8008fc84 + (*0x8004e5bc * 1024) + (*0x8008fc00 * 32)) = *(p1 + 0x2c) + stack.0x20
80069494: 3c048009 lui r4,0x8009
80069498: 8c84fc00 lw r4,-0x0400(r4)                #       *0x8008fc00
8006949c: 3c038005 lui r3,0x8005
800694a0: 8c63e5bc lw r3,-0x1a44(r3)                #       *0x8004e5bc
800694a4: 9222002e lbu r2,0x002e(r17)               #       *(p1 + 0x2e)
800694a8: 93a50022 lbu r5,0x0022(r29)               #       stack.0x22
800694ac: 00042140 sll r4,r4,0x05                   #       *0x8008fc00 * 32
800694b0: 00031a80 sll r3,r3,0x0a                   #       *0x8004e5bc * 1024
800694b4: 00832021 addu r4,r4,r3                    #       (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
800694b8: 00451021 addu r2,r2,r5                    #       *(p1 + 0x2e) + stack.0x22
800694bc: 3c018009 lui r1,0x8009
800694c0: 2421fc85 addiu r1,r1,-0x037b              #       0x8008fc85
800694c4: 00240821 addu r1,r1,r4                    #       0x8008fc85 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
800694c8: a0220000 sb r2,0x0000(r1)                 #       *(0x8008fc85 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)) = *(p1 + 0x2e) + stack.0x22
800694cc: 3c038009 lui r3,0x8009
800694d0: 8c63fc00 lw r3,-0x0400(r3)                #       *0x8008fc00
800694d4: 3c028005 lui r2,0x8005
800694d8: 8c42e5bc lw r2,-0x1a44(r2)                #       *0x8004e5bc
800694dc: 97a40024 lhu r4,0x0024(r29)               #       stack.0x24
800694e0: 00031940 sll r3,r3,0x05                   #       *0x8008fc00 * 32
800694e4: 00021280 sll r2,r2,0x0a                   #       *0x8004e5bc * 1024
800694e8: 00621821 addu r3,r3,r2                    #       (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
800694ec: 3c018009 lui r1,0x8009
800694f0: 2421fc88 addiu r1,r1,-0x0378              #       0x8008fc88
800694f4: 00230821 addu r1,r1,r3                    #       0x8008fc88 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
800694f8: a4240000 sh r4,0x0000(r1)                 #       *(0x8008fc88 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)) = stack.0x24
800694fc: 97a20026 lhu r2,0x0026(r29)               #       stack.0x26
80069500: 00000000 nop
80069504: 3c018009 lui r1,0x8009
80069508: 2421fc8a addiu r1,r1,-0x0376              #       0x8008fc8a
8006950c: 00230821 addu r1,r1,r3                    #       0x8008fc8a + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
80069510: a4220000 sh r2,0x0000(r1)                 #       *(0x8008fc8a + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)) = stack.0x26
80069514: 8e230014 lw r3,0x0014(r17)                #       *(p1 + 0x14)
80069518: 00000000 nop
8006951c: 000317c2 srl r2,r3,0x1f                   #       roundingAddend = (sign bit) of *(p1 + 0x14)
80069520: 00621021 addu r2,r3,r2                    #       divisor = *(p1 + 0x14) + roundingAddend
80069524: 00021043 sra r2,r2,0x01                   #       value = divisor / 2
80069528: 28420004 slti r2,r2,0x0004                
8006952c: 14400006 bne r2,r0,0x80069548             
80069530: 24620001 addiu r2,r3,0x0001               #       *(p1 + 0x14) + 1
                                                    #       if (value >= 4) {
80069534: 8e220000 lw r2,0x0000(r17)                #           *p1
80069538: ae200014 sw r0,0x0014(r17)                #           *(p1 + 0x14) = 0
8006953c: 38420100 xori r2,r2,0x0100                #           *p1 XOR 0x100
80069540: 0801a58a j 0x80069628
80069544: ae220000 sw r2,0x0000(r17)                #           *p1 = (*p1 XOR 0x100)       // Flip the 0x100 bit
                                                    #       } else {
80069548: 0801a58a j 0x80069628
8006954c: ae220014 sw r2,0x0014(r17)                #           *(p1 + 0x14) = *(p1 + 0x14) + 1
                                                    #       }
                                                    #   } else {
80069550: 3c028009 lui r2,0x8009
80069554: 8c42fc00 lw r2,-0x0400(r2)                #       *0x8008fc00
80069558: 3c038005 lui r3,0x8005
8006955c: 8c63e5bc lw r3,-0x1a44(r3)                #       *0x8004e5bc
80069560: 8e24001c lw r4,0x001c(r17)                #       *(p1 + 0x1c)
80069564: 00021140 sll r2,r2,0x05                   #       *0x8008fc00 * 32
80069568: 00031a80 sll r3,r3,0x0a                   #       *0x8004e5bc * 1024
8006956c: 00431021 addu r2,r2,r3                    #       (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
80069570: 3c018009 lui r1,0x8009
80069574: 2421fc80 addiu r1,r1,-0x0380              #       0x8008fc80
80069578: 00220821 addu r1,r1,r2                    #       0x8008fc80 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
8006957c: a4240000 sh r4,0x0000(r1)                 #       *(0x8008fc80 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)) = *(p1 + 0x1c)
80069580: 8e230020 lw r3,0x0020(r17)                #       *(p1 + 0x20)
80069584: 00000000 nop
80069588: 3c018009 lui r1,0x8009
8006958c: 2421fc82 addiu r1,r1,-0x037e              #       0x8008fc82
80069590: 00220821 addu r1,r1,r2                    #       0x8008fc82 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
80069594: a4230000 sh r3,0x0000(r1)                 #       *(0x8008fc82 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)) = *(p1 + 0x20)
80069598: 9623002c lhu r3,0x002c(r17)               #       *(p1 + 0x2c)
8006959c: 00000000 nop
800695a0: 3c018009 lui r1,0x8009
800695a4: 2421fc84 addiu r1,r1,-0x037c              #       0x8008fc84
800695a8: 00220821 addu r1,r1,r2                    #       0x8008fc84 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
800695ac: a0230000 sb r3,0x0000(r1)                 #       *(0x8008fc84 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)) = *(p1 + 0x2c)
800695b0: 3c028009 lui r2,0x8009
800695b4: 8c42fc00 lw r2,-0x0400(r2)                #       *0x8008fc00
800695b8: 3c038005 lui r3,0x8005
800695bc: 8c63e5bc lw r3,-0x1a44(r3)                #       *0x8004e5bc
800695c0: 9624002e lhu r4,0x002e(r17)               #       *(p1 + 0x2e)
800695c4: 00021140 sll r2,r2,0x05                   #       *0x8008fc00 * 32
800695c8: 00031a80 sll r3,r3,0x0a                   #       *0x8004e5bc * 1024
800695cc: 00431021 addu r2,r2,r3                    #       (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
800695d0: 3c018009 lui r1,0x8009
800695d4: 2421fc85 addiu r1,r1,-0x037b              #       0x8008fc85
800695d8: 00220821 addu r1,r1,r2                    #       0x8008fc85 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
800695dc: a0240000 sb r4,0x0000(r1)                 #       *(0x8008fc85 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)) =  *(p1 + 0x2e)
800695e0: 3c038009 lui r3,0x8009
800695e4: 8c63fc00 lw r3,-0x0400(r3)                #       *0x8008fc00
800695e8: 3c028005 lui r2,0x8005
800695ec: 8c42e5bc lw r2,-0x1a44(r2)                #       *0x8004e5bc
800695f0: 96240030 lhu r4,0x0030(r17)               #       *(p1 + 0x30)
800695f4: 00031940 sll r3,r3,0x05                   #       *0x8008fc00 * 32
800695f8: 00021280 sll r2,r2,0x0a                   #       *0x8004e5bc * 1024
800695fc: 00621821 addu r3,r3,r2                    #       (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
80069600: 3c018009 lui r1,0x8009
80069604: 2421fc88 addiu r1,r1,-0x0378              #       0x8008fc88
80069608: 00230821 addu r1,r1,r3                    #       0x8008fc88 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
8006960c: a4240000 sh r4,0x0000(r1)                 #       *(0x8008fc88 + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)) = *(p1 + 0x30)
80069610: 96220032 lhu r2,0x0032(r17)               #       *(p1 + 0x32)
80069614: 00000000 nop
80069618: 3c018009 lui r1,0x8009
8006961c: 2421fc8a addiu r1,r1,-0x0376              #       0x8008fc8a
80069620: 00230821 addu r1,r1,r3                    #       0x8008fc8a + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)
80069624: a4220000 sh r2,0x0000(r1)                 #       *(0x8008fc8a + (*0x8008fc00 * 32) + (*0x8004e5bc * 1024)) = *(p1 + 0x32)
                                                    #   }
80069628: 3c108009 lui r16,0x8009
8006962c: 2610fc6c addiu r16,r16,-0x0394            #   0x8008fc6c
80069630: 8e24000c lw r4,0x000c(r17)                #   *(p1 + 0x0c)
80069634: 3c058005 lui r5,0x8005
80069638: 8ca5e5bc lw r5,-0x1a44(r5)                #   *0x8004e5bc
8006963c: 3c028009 lui r2,0x8009
80069640: 8c42fc00 lw r2,-0x0400(r2)                #   *0x8008fc00
80069644: 00042080 sll r4,r4,0x02                   #   *(p1 + 0x0c) * 4
80069648: 02442021 addu r4,r18,r4                   #   p2 + (*(p1 + 0x0c) * 4)
8006964c: 00052a80 sll r5,r5,0x0a                   #   *0x8004e5bc * 1024
80069650: 00021140 sll r2,r2,0x05                   #   *0x8008fc00 * 32
80069654: 00501021 addu r2,r2,r16                   #   (*0x8008fc00 * 32) + 0x8008fc6c
80069658: 00a22821 addu r5,r5,r2                    #   (*0x8004e5bc * 1024) + (*0x8008fc00 * 32) + 0x8008fc6c
8006965c: 0c008eed jal 0x80023bb4                   #   P06 AddPrim (p2 + (*(p1 + 0x0c) * 4), (GPU Prim Address) + (*0x8008fc00 * 32) + 0x8008fc78);        // No menu graphics if removed // adds primative to GPU list.
80069660: 24a5000c addiu r5,r5,0x000c               #   (*0x8004e5bc * 1024) + (*0x8008fc00 * 32) + 0x8008fc78
80069664: 8e24000c lw r4,0x000c(r17)                #   *(p1 + 0x0c)
80069668: 3c028005 lui r2,0x8005
8006966c: 8c42e5bc lw r2,-0x1a44(r2)                #   *0x8004e5bc
80069670: 3c058009 lui r5,0x8009
80069674: 8ca5fc00 lw r5,-0x0400(r5)                #   *0x8008fc00
80069678: 00042080 sll r4,r4,0x02                   #   *(p1 + 0x0c) * 4
8006967c: 02442021 addu r4,r18,r4                   #   p2 + (*(p1 + 0x0c) * 4)
80069680: 00021280 sll r2,r2,0x0a                   #   *0x8004e5bc * 1024
80069684: 00052940 sll r5,r5,0x05                   #   *0x8008fc00 * 32
80069688: 00b02821 addu r5,r5,r16                   #   (*0x8008fc00 * 32) + 0x8008fc6c
8006968c: 0c008eed jal 0x80023bb4                   #   P06 AddPrim (p2 + (*(p1 + 0x0c) * 4), (*0x8004e5bc * 1024) + (*0x8008fc00 * 32) + 0x8008fc6c);        // Menu graphics messed up if removed
80069690: 00452821 addu r5,r2,r5                    #   (*0x8004e5bc * 1024) + (*0x8008fc00 * 32) + 0x8008fc6c
80069694: 3c028009 lui r2,0x8009
80069698: 8c42fc00 lw r2,-0x0400(r2)                #   *0x8008fc00
8006969c: 00000000 nop
800696a0: 24420001 addiu r2,r2,0x0001               #   *0x8008fc00 + 1
800696a4: 3c018009 lui r1,0x8009
800696a8: ac22fc00 sw r2,-0x0400(r1)                #   *0x8008fc00 = *0x8008fc00 + 1
800696ac: 8fbf004c lw r31,0x004c(r29)
800696b0: 8fb20048 lw r18,0x0048(r29)
800696b4: 8fb10044 lw r17,0x0044(r29)
800696b8: 8fb00040 lw r16,0x0040(r29)
800696bc: 27bd0050 addiu r29,r29,0x0050
800696c0: 03e00008 jr r31
800696c4: 00000000 nop