Difference between revisions of "Palette mod by status"
Jump to navigation
Jump to search
m |
RetroTypes (talk | contribs) |
||
Line 1: | Line 1: | ||
<font face='Courier New'> | <font face='Courier New'> | ||
+ | #Parameters | ||
+ | #r4 = Misc Unit Data Pointer | ||
+ | #r6 = ? | ||
+ | |||
+ | #Returns | ||
+ | #r5 = Shade Type (Talcall notes) | ||
+ | 4 = additive (brighter) | ||
+ | 5 = neutral shading? | ||
+ | 6 = monochrome | ||
+ | |||
+ | #*NOTE* : reference [https://ffhacktics.com/wiki/BATTLE.BIN_Data_Tables#Battle_Related_Data misc unit data] for status tables, not normal unit data | ||
+ | |||
000822bc: 27bdffd0 addiu r29,r29,0xffd0 | 000822bc: 27bdffd0 addiu r29,r29,0xffd0 | ||
000822c0: afbf0028 sw r31,0x0028(r29) | 000822c0: afbf0028 sw r31,0x0028(r29) | ||
− | 000822c4: 9082013e lbu r2,0x013e(r4) load | + | 000822c4: 9082013e lbu r2,0x013e(r4) #load modified palette byte |
000822c8: 00000000 nop | 000822c8: 00000000 nop | ||
− | 000822cc: 14400062 bne r2,r0,0x00082458 | + | 000822cc: 14400062 bne r2,r0,0x00082458 #branch to End if not zero |
000822d0: 00c04021 addu r8,r6,r0 | 000822d0: 00c04021 addu r8,r6,r0 | ||
000822d4: 3c0260c2 lui r2,0x60c2 | 000822d4: 3c0260c2 lui r2,0x60c2 | ||
− | 000822d8: 34426020 ori r2,r2,0x6020 | + | 000822d8: 34426020 ori r2,r2,0x6020 #statuses 20 60 c2 60 (Petrify, Berserk, Cursed, Oil, Poison, Blood Suck, Undead, and Regen) |
− | 000822dc: 8c830140 lw r3,0x0140(r4) load status flags | + | 000822dc: 8c830140 lw r3,0x0140(r4) #load status flags |
− | 000822e0: 90870004 lbu r7,0x0004(r4) load misc ID | + | 000822e0: 90870004 lbu r7,0x0004(r4) #load misc ID |
− | 000822e4: 00621024 and r2,r3,r2 check for palette changing status | + | 000822e4: 00621024 and r2,r3,r2 #check for palette changing status |
− | 000822e8: 10400059 beq r2,r0,0x00082450 | + | 000822e8: 10400059 beq r2,r0,0x00082450 #branch to Non-status Palette Modification if no palette-editing status present |
000822ec: 30620020 andi r2,r3,0x0020 | 000822ec: 30620020 andi r2,r3,0x0020 | ||
− | |||
− | petrify | + | Petrify: |
+ | 000822f0: 10400007 beq r2,r0,0x00082310 #branch if not petrify | ||
000822f4: 34060003 ori r6,r0,0x0003 | 000822f4: 34060003 ori r6,r0,0x0003 | ||
− | 000822f8: 34050006 ori r5,r0,0x0006 | + | 000822f8: 34050006 ori r5,r0,0x0006 #shade type 6 |
− | 000822fc: afa00010 sw r0,0x0010(r29) | + | 000822fc: afa00010 sw r0,0x0010(r29) #store ? = 0 (this is zeroed out for every status here) |
− | 00082300: afa00014 sw r0,0x0014(r29) | + | 00082300: afa00014 sw r0,0x0014(r29) #store red = 0 |
− | 00082304: afa00018 sw r0,0x0018(r29) | + | 00082304: afa00018 sw r0,0x0018(r29) #store green = 0 |
− | 00082308: 08020910 j 0x00082440 | + | 00082308: 08020910 j 0x00082440 #Status Palette Modification |
− | 0008230c: afa0001c sw r0,0x001c(r29) | + | 0008230c: afa0001c sw r0,0x001c(r29) #store blue = 0 |
Blood suck: | Blood suck: | ||
00082310: 3c020002 lui r2,0x0002 | 00082310: 3c020002 lui r2,0x0002 | ||
00082314: 00621024 and r2,r3,r2 | 00082314: 00621024 and r2,r3,r2 | ||
− | 00082318: 10400008 beq r2,r0,0x0008233c | + | 00082318: 10400008 beq r2,r0,0x0008233c #branch if not blood suck |
0008231c: 34020003 ori r2,r0,0x0003 | 0008231c: 34020003 ori r2,r0,0x0003 | ||
− | 00082320: 34050006 ori r5,r0,0x0006 | + | 00082320: 34050006 ori r5,r0,0x0006 #shade type 6 |
− | 00082324: afa20014 sw r2,0x0014(r29) | + | 00082324: afa20014 sw r2,0x0014(r29) #store red = 3 |
00082328: 2402ffff addiu r2,r0,0xffff | 00082328: 2402ffff addiu r2,r0,0xffff | ||
− | 0008232c: afa20018 sw r2,0x0018(r29) | + | 0008232c: afa20018 sw r2,0x0018(r29) #store green = -1 |
− | 00082330: 34020008 ori r2,r0,0x0008 | + | 00082330: 34020008 ori r2,r0,0x0008 #prep blue value as 8 |
− | 00082334: 0802090f j 0x0008243c | + | 00082334: 0802090f j 0x0008243c #(Save blue = r2) |
− | 00082338: afa00010 sw r0,0x0010(r29) | + | 00082338: afa00010 sw r0,0x0010(r29) #store ? = 0 |
− | + | Berserk: | |
0008233c: 30624000 andi r2,r3,0x4000 | 0008233c: 30624000 andi r2,r3,0x4000 | ||
− | 00082340: 10400008 beq r2,r0,0x00082364 | + | 00082340: 10400008 beq r2,r0,0x00082364 #branch if not berserk |
00082344: 34060003 ori r6,r0,0x0003 | 00082344: 34060003 ori r6,r0,0x0003 | ||
− | 00082348: 34050004 ori r5,r0,0x0004 | + | 00082348: 34050004 ori r5,r0,0x0004 #shade type 4 |
0008234c: 34020008 ori r2,r0,0x0008 | 0008234c: 34020008 ori r2,r0,0x0008 | ||
− | 00082350: afa00010 sw r0,0x0010(r29) | + | 00082350: afa00010 sw r0,0x0010(r29) #store ? = 0 |
− | 00082354: afa20014 sw r2,0x0014(r29) | + | 00082354: afa20014 sw r2,0x0014(r29) #store red = 8 |
− | 00082358: afa00018 sw r0,0x0018(r29) | + | 00082358: afa00018 sw r0,0x0018(r29) #store green = 0 |
− | 0008235c: 08020910 j 0x00082440 | + | 0008235c: 08020910 j 0x00082440 #Status Palette Modification |
− | 00082360: afa0001c sw r0,0x001c(r29) | + | 00082360: afa0001c sw r0,0x001c(r29) #store blue = 0 |
Poison: | Poison: | ||
00082364: 3c020040 lui r2,0x0040 | 00082364: 3c020040 lui r2,0x0040 | ||
00082368: 00621024 and r2,r3,r2 | 00082368: 00621024 and r2,r3,r2 | ||
− | 0008236c: 10400007 beq r2,r0,0x0008238c | + | 0008236c: 10400007 beq r2,r0,0x0008238c #branch if not poison |
00082370: 34020008 ori r2,r0,0x0008 | 00082370: 34020008 ori r2,r0,0x0008 | ||
− | 00082374: 34050005 ori r5,r0,0x0005 | + | 00082374: 34050005 ori r5,r0,0x0005 #shade type 5 |
− | 00082378: afa00010 sw r0,0x0010(r29) | + | 00082378: afa00010 sw r0,0x0010(r29) #store ? = 0 |
− | 0008237c: afa00014 sw r0,0x0014(r29) | + | 0008237c: afa00014 sw r0,0x0014(r29) #store red = 0 |
− | 00082380: afa20018 sw r2,0x0018(r29) | + | 00082380: afa20018 sw r2,0x0018(r29) #store green = 8 |
− | 00082384: 08020910 j 0x00082440 | + | 00082384: 08020910 j 0x00082440 #Status Palette Modification |
− | 00082388: afa0001c sw r0,0x001c(r29) | + | 00082388: afa0001c sw r0,0x001c(r29) #store blue = 0 |
− | + | Regen: | |
0008238c: 3c022000 lui r2,0x2000 | 0008238c: 3c022000 lui r2,0x2000 | ||
00082390: 00621024 and r2,r3,r2 | 00082390: 00621024 and r2,r3,r2 | ||
− | 00082394: 10400006 beq r2,r0,0x000823b0 | + | 00082394: 10400006 beq r2,r0,0x000823b0 #branch if not regen |
00082398: 34060003 ori r6,r0,0x0003 | 00082398: 34060003 ori r6,r0,0x0003 | ||
− | 0008239c: 34050004 ori r5,r0,0x0004 | + | 0008239c: 34050004 ori r5,r0,0x0004 #shade type 4 |
− | 000823a0: 34020008 ori r2,r0,0x0008 | + | 000823a0: 34020008 ori r2,r0,0x0008 #prep blue value as 8 |
− | 000823a4: afa00010 sw r0,0x0010(r29) | + | 000823a4: afa00010 sw r0,0x0010(r29) #store ? = 0 |
− | 000823a8: 0802090e j 0x00082438 | + | 000823a8: 0802090e j 0x00082438 #(Save green = 0 and blue = r2) |
− | 000823ac: afa00014 sw r0,0x0014(r29) | + | 000823ac: afa00014 sw r0,0x0014(r29) #store red = 0 |
− | + | Oil: | |
000823b0: 3c020080 lui r2,0x0080 | 000823b0: 3c020080 lui r2,0x0080 | ||
000823b4: 00621024 and r2,r3,r2 | 000823b4: 00621024 and r2,r3,r2 | ||
− | 000823b8: 10400006 beq r2,r0,0x000823d4 | + | 000823b8: 10400006 beq r2,r0,0x000823d4 #branch if not oil |
− | 000823bc: 2402fffc addiu r2,r0,0xfffc | + | 000823bc: 2402fffc addiu r2,r0,0xfffc #(also preps blue value as -4) |
− | 000823c0: 34050005 ori r5,r0,0x0005 | + | 000823c0: 34050005 ori r5,r0,0x0005 #shade type 5 |
− | 000823c4: afa00010 sw r0,0x0010(r29) | + | 000823c4: afa00010 sw r0,0x0010(r29) #store ? = 0 |
− | 000823c8: afa20014 sw r2,0x0014(r29) | + | 000823c8: afa20014 sw r2,0x0014(r29) #store red = -4 |
− | 000823cc: 0802090f j 0x0008243c | + | 000823cc: 0802090f j 0x0008243c #(Save blue = r2) |
− | 000823d0: afa20018 sw r2,0x0018(r29) | + | 000823d0: afa20018 sw r2,0x0018(r29) #store green = -4 |
− | + | Cursed: | |
000823d4: 30622000 andi r2,r3,0x2000 | 000823d4: 30622000 andi r2,r3,0x2000 | ||
− | 000823d8: 10400007 beq r2,r0,0x000823f8 | + | 000823d8: 10400007 beq r2,r0,0x000823f8 #branch if not cursed |
000823dc: 34060003 ori r6,r0,0x0003 | 000823dc: 34060003 ori r6,r0,0x0003 | ||
− | 000823e0: 34050005 ori r5,r0,0x0005 | + | 000823e0: 34050005 ori r5,r0,0x0005 #shade type 5 |
− | 000823e4: 2402fff8 addiu r2,r0,0xfff8 | + | 000823e4: 2402fff8 addiu r2,r0,0xfff8 #(also preps blue value as -8) |
− | 000823e8: afa00010 sw r0,0x0010(r29) | + | 000823e8: afa00010 sw r0,0x0010(r29) #store ? = 0 |
− | 000823ec: afa20014 sw r2,0x0014(r29) | + | 000823ec: afa20014 sw r2,0x0014(r29) #store red = -8 |
− | 000823f0: 0802090f j 0x0008243c | + | 000823f0: 0802090f j 0x0008243c #(Save blue = r2) |
− | 000823f4: afa20018 sw r2,0x0018(r29) | + | 000823f4: afa20018 sw r2,0x0018(r29) #store green = -8 |
− | + | Undead: | |
000823f8: 3c024000 lui r2,0x4000 | 000823f8: 3c024000 lui r2,0x4000 | ||
000823fc: 00621024 and r2,r3,r2 | 000823fc: 00621024 and r2,r3,r2 | ||
− | 00082400: 10400013 beq r2,r0,0x00082450 | + | 00082400: 10400013 beq r2,r0,0x00082450 #branch if not undead (end? Lol) |
00082404: 00000000 nop | 00082404: 00000000 nop | ||
− | 00082408: 90820006 lbu r2,0x0006(r4) | + | 00082408: 90820006 lbu r2,0x0006(r4) #load spritesheet ID |
0008240c: 00000000 nop | 0008240c: 00000000 nop | ||
− | 00082410: 24420075 addiu r2,r2,0x0075 | + | 00082410: 24420075 addiu r2,r2,0x0075 #spritesheet ID + 0x75 |
− | 00082414: 304200ff andi r2,r2,0x00ff | + | 00082414: 304200ff andi r2,r2,0x00ff |
− | 00082418: 2c420002 sltiu r2,r2,0x0002 | + | 00082418: 2c420002 sltiu r2,r2,0x0002 #Skeleton/Ghost sprite check |
− | 0008241c: 1440000c bne r2,r0,0x00082450 | + | 0008241c: 1440000c bne r2,r0,0x00082450 #branch to Non-status Palette Modification if Skeleton/Ghost sprite |
00082420: 34060003 ori r6,r0,0x0003 | 00082420: 34060003 ori r6,r0,0x0003 | ||
− | 00082424: 34050005 ori r5,r0,0x0005 | + | 00082424: 34050005 ori r5,r0,0x0005 #shade type 5 |
00082428: 34020004 ori r2,r0,0x0004 | 00082428: 34020004 ori r2,r0,0x0004 | ||
− | 0008242c: afa20014 sw r2,0x0014(r29) | + | 0008242c: afa20014 sw r2,0x0014(r29) #store red = 4 |
− | 00082430: 34020005 ori r2,r0,0x0005 | + | 00082430: 34020005 ori r2,r0,0x0005 #prep blue value as 5 |
− | 00082434: afa00010 sw r0,0x0010(r29) | + | 00082434: afa00010 sw r0,0x0010(r29) #store ? = 0 |
− | |||
− | + | Save Green: | |
− | 0008243c: afa2001c sw r2,0x001c(r29) store blue ( | + | 00082438: afa00018 sw r0,0x0018(r29) #store green = 0 |
− | 00082440: 0c020844 jal 0x00082110 | + | |
+ | Save Blue: | ||
+ | 0008243c: afa2001c sw r2,0x001c(r29) #store blue = r2 (value varies depending on jumps) | ||
+ | |||
+ | Status Palette Modification: | ||
+ | 00082440: 0c020844 jal 0x00082110 #[[Special spritesheet ID palette mods?]] | ||
00082444: afa80020 sw r8,0x0020(r29) | 00082444: afa80020 sw r8,0x0020(r29) | ||
− | 00082448: 08020916 j 0x00082458 | + | 00082448: 08020916 j 0x00082458 #jump to End |
0008244c: 00000000 nop | 0008244c: 00000000 nop | ||
− | 00082450: 0c020755 jal 0x00081d54 | + | |
+ | Non-status Palette Modification: | ||
+ | 00082450: 0c020755 jal 0x00081d54 #[[Weather/time of day/tile palette modification]] | ||
00082454: 01003021 addu r6,r8,r0 | 00082454: 01003021 addu r6,r8,r0 | ||
+ | |||
+ | End: | ||
00082458: 8fbf0028 lw r31,0x0028(r29) | 00082458: 8fbf0028 lw r31,0x0028(r29) | ||
0008245c: 27bd0030 addiu r29,r29,0x0030 | 0008245c: 27bd0030 addiu r29,r29,0x0030 |
Latest revision as of 09:07, 3 July 2023
#Parameters #r4 = Misc Unit Data Pointer #r6 = ? #Returns #r5 = Shade Type (Talcall notes) 4 = additive (brighter) 5 = neutral shading? 6 = monochrome #*NOTE* : reference misc unit data for status tables, not normal unit data 000822bc: 27bdffd0 addiu r29,r29,0xffd0 000822c0: afbf0028 sw r31,0x0028(r29) 000822c4: 9082013e lbu r2,0x013e(r4) #load modified palette byte 000822c8: 00000000 nop 000822cc: 14400062 bne r2,r0,0x00082458 #branch to End if not zero 000822d0: 00c04021 addu r8,r6,r0 000822d4: 3c0260c2 lui r2,0x60c2 000822d8: 34426020 ori r2,r2,0x6020 #statuses 20 60 c2 60 (Petrify, Berserk, Cursed, Oil, Poison, Blood Suck, Undead, and Regen) 000822dc: 8c830140 lw r3,0x0140(r4) #load status flags 000822e0: 90870004 lbu r7,0x0004(r4) #load misc ID 000822e4: 00621024 and r2,r3,r2 #check for palette changing status 000822e8: 10400059 beq r2,r0,0x00082450 #branch to Non-status Palette Modification if no palette-editing status present 000822ec: 30620020 andi r2,r3,0x0020
Petrify:
000822f0: 10400007 beq r2,r0,0x00082310 #branch if not petrify 000822f4: 34060003 ori r6,r0,0x0003 000822f8: 34050006 ori r5,r0,0x0006 #shade type 6 000822fc: afa00010 sw r0,0x0010(r29) #store ? = 0 (this is zeroed out for every status here) 00082300: afa00014 sw r0,0x0014(r29) #store red = 0 00082304: afa00018 sw r0,0x0018(r29) #store green = 0 00082308: 08020910 j 0x00082440 #Status Palette Modification 0008230c: afa0001c sw r0,0x001c(r29) #store blue = 0
Blood suck:
00082310: 3c020002 lui r2,0x0002 00082314: 00621024 and r2,r3,r2 00082318: 10400008 beq r2,r0,0x0008233c #branch if not blood suck 0008231c: 34020003 ori r2,r0,0x0003 00082320: 34050006 ori r5,r0,0x0006 #shade type 6 00082324: afa20014 sw r2,0x0014(r29) #store red = 3 00082328: 2402ffff addiu r2,r0,0xffff 0008232c: afa20018 sw r2,0x0018(r29) #store green = -1 00082330: 34020008 ori r2,r0,0x0008 #prep blue value as 8 00082334: 0802090f j 0x0008243c #(Save blue = r2) 00082338: afa00010 sw r0,0x0010(r29) #store ? = 0
Berserk:
0008233c: 30624000 andi r2,r3,0x4000 00082340: 10400008 beq r2,r0,0x00082364 #branch if not berserk 00082344: 34060003 ori r6,r0,0x0003 00082348: 34050004 ori r5,r0,0x0004 #shade type 4 0008234c: 34020008 ori r2,r0,0x0008 00082350: afa00010 sw r0,0x0010(r29) #store ? = 0 00082354: afa20014 sw r2,0x0014(r29) #store red = 8 00082358: afa00018 sw r0,0x0018(r29) #store green = 0 0008235c: 08020910 j 0x00082440 #Status Palette Modification 00082360: afa0001c sw r0,0x001c(r29) #store blue = 0
Poison:
00082364: 3c020040 lui r2,0x0040 00082368: 00621024 and r2,r3,r2 0008236c: 10400007 beq r2,r0,0x0008238c #branch if not poison 00082370: 34020008 ori r2,r0,0x0008 00082374: 34050005 ori r5,r0,0x0005 #shade type 5 00082378: afa00010 sw r0,0x0010(r29) #store ? = 0 0008237c: afa00014 sw r0,0x0014(r29) #store red = 0 00082380: afa20018 sw r2,0x0018(r29) #store green = 8 00082384: 08020910 j 0x00082440 #Status Palette Modification 00082388: afa0001c sw r0,0x001c(r29) #store blue = 0
Regen:
0008238c: 3c022000 lui r2,0x2000 00082390: 00621024 and r2,r3,r2 00082394: 10400006 beq r2,r0,0x000823b0 #branch if not regen 00082398: 34060003 ori r6,r0,0x0003 0008239c: 34050004 ori r5,r0,0x0004 #shade type 4 000823a0: 34020008 ori r2,r0,0x0008 #prep blue value as 8 000823a4: afa00010 sw r0,0x0010(r29) #store ? = 0 000823a8: 0802090e j 0x00082438 #(Save green = 0 and blue = r2) 000823ac: afa00014 sw r0,0x0014(r29) #store red = 0
Oil:
000823b0: 3c020080 lui r2,0x0080 000823b4: 00621024 and r2,r3,r2 000823b8: 10400006 beq r2,r0,0x000823d4 #branch if not oil 000823bc: 2402fffc addiu r2,r0,0xfffc #(also preps blue value as -4) 000823c0: 34050005 ori r5,r0,0x0005 #shade type 5 000823c4: afa00010 sw r0,0x0010(r29) #store ? = 0 000823c8: afa20014 sw r2,0x0014(r29) #store red = -4 000823cc: 0802090f j 0x0008243c #(Save blue = r2) 000823d0: afa20018 sw r2,0x0018(r29) #store green = -4
Cursed:
000823d4: 30622000 andi r2,r3,0x2000 000823d8: 10400007 beq r2,r0,0x000823f8 #branch if not cursed 000823dc: 34060003 ori r6,r0,0x0003 000823e0: 34050005 ori r5,r0,0x0005 #shade type 5 000823e4: 2402fff8 addiu r2,r0,0xfff8 #(also preps blue value as -8) 000823e8: afa00010 sw r0,0x0010(r29) #store ? = 0 000823ec: afa20014 sw r2,0x0014(r29) #store red = -8 000823f0: 0802090f j 0x0008243c #(Save blue = r2) 000823f4: afa20018 sw r2,0x0018(r29) #store green = -8
Undead:
000823f8: 3c024000 lui r2,0x4000 000823fc: 00621024 and r2,r3,r2 00082400: 10400013 beq r2,r0,0x00082450 #branch if not undead (end? Lol) 00082404: 00000000 nop 00082408: 90820006 lbu r2,0x0006(r4) #load spritesheet ID 0008240c: 00000000 nop 00082410: 24420075 addiu r2,r2,0x0075 #spritesheet ID + 0x75 00082414: 304200ff andi r2,r2,0x00ff 00082418: 2c420002 sltiu r2,r2,0x0002 #Skeleton/Ghost sprite check 0008241c: 1440000c bne r2,r0,0x00082450 #branch to Non-status Palette Modification if Skeleton/Ghost sprite 00082420: 34060003 ori r6,r0,0x0003 00082424: 34050005 ori r5,r0,0x0005 #shade type 5 00082428: 34020004 ori r2,r0,0x0004 0008242c: afa20014 sw r2,0x0014(r29) #store red = 4 00082430: 34020005 ori r2,r0,0x0005 #prep blue value as 5 00082434: afa00010 sw r0,0x0010(r29) #store ? = 0
Save Green:
00082438: afa00018 sw r0,0x0018(r29) #store green = 0
Save Blue:
0008243c: afa2001c sw r2,0x001c(r29) #store blue = r2 (value varies depending on jumps)
Status Palette Modification:
00082440: 0c020844 jal 0x00082110 #Special spritesheet ID palette mods? 00082444: afa80020 sw r8,0x0020(r29) 00082448: 08020916 j 0x00082458 #jump to End 0008244c: 00000000 nop
Non-status Palette Modification:
00082450: 0c020755 jal 0x00081d54 #Weather/time of day/tile palette modification 00082454: 01003021 addu r6,r8,r0
End:
00082458: 8fbf0028 lw r31,0x0028(r29) 0008245c: 27bd0030 addiu r29,r29,0x0030 00082460: 03e00008 jr r31 00082464: 00000000 nop